Java三大特征之封装

 作为三个特征之一的封装,相对来说还是比较好理解的。

 

我要看电视,只需要按一下开关和换台就可以了。有必要了解电视机内部的结构吗?有必要碰碰显像管吗?

制造厂家为了方便我们使用电视,把复杂的内部细节全部封装起来,只给我们暴露简单的接口,比如: 电源开关。需要让用户知道的暴露出来,不需要让用户了解的全部隐藏起来。这就是封装。

白话:该露的露,该藏的藏

专业:我们程序设计要追求“高内聚,低耦合”。

  高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;

  低耦合:仅暴露少量的方法给外部使用。

 

封装(数据的隐藏)

  在定义一个对象的特性的时候,有必要决定这些特性的可见性,即哪些特性对外部是可见的,哪些特性 用于表示内部状态。

  通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。

 

1、封装的步骤:

  1.使用private修饰需要封装的成员变量

  2.提供一个公开的方法设置或者访问私有的属性

    设置   通过set方法,命名格式: set属性名(); 属性的首字母要大写

    访问   通过get方法,命名格式: get属性名(); 属性的首字母要大写

【演示】

 1 //对象能在类的外部"直接"访问
 2 public class Student{
 3     public String name;
 4     public void println(){
 5         System.out.println(this.name);
 6     }
 7 }
 8 public class Test{
 9     public static void main(String[] args){
10         Student s = new Student();
11         s.name = "tom";
12     }
13 }

在类中一般不会把数据直接暴露在外部的,而使用private(私有)关键字把数据隐藏起来

【演示】

 1 public class Student{
 2     private String name;
 3 }
 4 public class Test{
 5     public static void main(String[] args){
 6         Student s = new Student();
 7 //编译报错,在类的外部不能直接访问类中的私有成员
 8         s.name = "tom";
 9     }
10 }

如果在类的外部需要访问这些私有属性,那么可以在类中提供对于的get和set方法,以便让用户在类的外部 可以间接的访问到私有属性

【演示】

//set负责给属性赋值
//get负责返回属性的值
public class Student{
    private String name;
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return this.name;
    }
}
public class Test{
    public static void main(String[] args){
        Student s = new Student();
        s.setName("tom");
        System.out.println(s.getName());
    }
}

 

2、作用和意义

  1. 提高程序的安全性,保护数据。

  2. 隐藏代码的实现细节

  3. 统一用户的调用接口

  4. 提高系统的可维护性

  5. 便于调用者调用。

良好的封装,便于修改内部代码,提高可维护性。

良好的封装,可进行数据完整性检测,保证数据的有效性。

 

3、方法重载

类中有多个方法,有着相同的方法名,但是方法的参数各不相同,这种情况被称为方法的重载。方法的重载 可以提供方法调用的灵活性。

例如:

1 public class Test{
2     public void test(String str){
3     }
4     public void test(int a){
5     }
6 }

方法重载必须满足以下条件

  1. 方法名必须相同

  2. 参数列表必须不同(参数的类型、个数、顺序的不同)

1 public void test(Strig str){}
2 public void test(int a){}
3 public void test(Strig str,double d){}
4 public void test(Strig str){}
5 public void test(Strig str,double d){}
6 public void test(double d,Strig str){}

  3. 方法的返回值可以不同,也可以相同。

在java中,判断一个类中的俩个方法是否相同,主要参考俩个方面:方法名字和参数列表

posted @ 2021-03-02 17:20  |好的|  阅读(92)  评论(0编辑  收藏  举报