封装概述:

是指隐藏对象的属性和实现细节,仅对外提供公共访问方式,这里就会用到一个关键字是private,在后面的使用成员变量时候,不能直接调动,只能通过方法调用;

好处:

  • 隐藏实现细节,提供公共的访问方式;
  • 提高了代码的复用性;
  • 提高安全性;

    封装原则:

  • 将不需要对外提供的内容都隐藏起来;

  • 把属性隐藏,提供公共方法对其访问;

    private关键字

  • private关键字
    是一个权限修饰符
    可以修饰成员(成员变量和成员方法)
    被private修饰的成员只在本类中才能访问

  • private最常见的应用
    把成员变量用private修饰
    提供对应的getXXX()/setXXX()方法
    一个标准的案例的使用
  1. package cn.manman.com;
  2. public class fengzhuang {
  3. private String name;
  4. private int age;
  5. private String address;
  6. public String getName() {
  7. return name;
  8. }
  9. public void setName(String name) {
  10. this.name = name;
  11. }
  12. public int getAge() {
  13. return age;
  14. }
  15. public void setAge(int age) {
  16. this.age = age;
  17. }
  18. public String getAddress() {
  19. return address;
  20. }
  21. public void setAddress(String address) {
  22. this.address = address;
  23. }
  24. }

被private修饰之后的成员变量和成员方法只能在本类中使用,不能在另外一个类直接调用;
练习:
将手机类写成一个标准类,然后创建对象测试功能;
(1)封装类

  1. package cn.manman.com;
  2. public class phone {
  3. private String brand;
  4. public String getBrand() {
  5. return brand;
  6. }
  7. public void setBrand(String brand) {
  8. this.brand = brand;
  9. }
  10. public int getPrice() {
  11. return price;
  12. }
  13. public void setPrice(int price) {
  14. this.price = price;
  15. }
  16. public String getColor() {
  17. return color;
  18. }
  19. public void setColor(String color) {
  20. this.color = color;
  21. }
  22. private int price;
  23. private String color;
  24. }

(2)测试类

  1. package cn.manman.com;
  2. public class PhoneDemo {
  3. public static void main(String[] args) {
  4. phone p=new phone();
  5. p.setBrand("华为");
  6. p.setColor("粉色");
  7. p.setPrice(10000);
  8. System.out.println(p.getBrand()+p.getColor()+p.getPrice());
  9. }
  10. }

Java的封装概念与实现 - 图1
结果

接下来看类中得成员方法以及使用:

  1. package cn.manman.com;
  2. /*
  3. * 类的组成:
  4. * 成员变量
  5. * 构造方法
  6. * 成员方法
  7. * 根据返回值:
  8. * void类型
  9. * 非void类型
  10. * 式参数:
  11. * 空参数方法
  12. * 非空参方法
  13. */
  14. class fang{
  15. public String getString (){
  16. return "hello";
  17. }
  18. public void show(){
  19. System.out.println("show");
  20. }
  21. public void method(String name){
  22. System.out.println(name);
  23. }
  24. public String funtion(String s1,String s2){
  25. return s1+s2;
  26. }
  27. }
  28. public class fangfa {
  29. public static void main(String[] args) {
  30. fang f=new fang();
  31. //调用无参无返回值
  32. f.show();
  33. //调用无参有返回值方法
  34. String result=f.getString();
  35. System.out.println(result);
  36. //调用有参无返回值方法
  37. f.method("lisi");
  38. String result1=f.funtion("我是", "李四");
  39. System.out.println(result1);
  40. }
  41. }

Java的封装概念与实现 - 图2
结果

练习1:定义一个类Demo,其中定义一个求两个数据和的方法,定义一个测试了Test,进行测试;

  1. package cn.manman.com;
  2. /*
  3. * 定义一个类Demo,其中定义一个求两个数据和的方法,
  4. * 定义一个测试了Test,进行测试;
  5. */
  6. class Demo{
  7. public int shuju(int a,int b){
  8. return a+b;
  9. }
  10. }
  11. public class lianxi1 {
  12. public static void main(String[] args) {
  13. Demo demo=new Demo();
  14. int sum=demo.shuju(10, 20);
  15. System.out.println(sum);
  16. }
  17. }