您的位置 首页 java

Java基础篇——三大特性(封装)

封装的概念

封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

通俗的理解就是把自己不希望被别人看见的属性和方法隐藏起来,将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问。

封装的实现

在实现封装之前我们要了解Java的访问权限修饰符。在封装的具体实现中主要通过Java的三个关键字:public,private,protected。这些访问指定词决定了紧跟其后被定义的东西可以被谁使用。

public表示紧随其后的元素任何人都可以使用,而private这个关键字表示除类型创建者和类型的内部方法以外的任何人都不可以直接访问(本类和本类中的方法可以访问)protected关键字和private作用相当,差别在于继承的类可以访问protected成员,但是不能访问private成员。

注: Java还有一种默认的访问权限,当没有使用前面提到的任何访问指定词时,它将发挥作用这种权限通常被称为 包访问权限 ,因为在这种权限下,类可以访问在同一个包(库构件)中的其他类的成员,但是在包之外,这些成员如同指定了 private一样。

具体步骤

(1)将类中的变量修改属性的可见性设为(private)

(2)创建getter/setter方法(用于私有属性的外部读写)——对象通过调用这两种发方法实现对数据的获取和修改

(3)在getter/setter方法中加入属性控制语句(对属性值的合法性进行判断,可以控制修改值的范围)

具体案例

 public class Person{
    //将name和age属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。
    private String name;
    private int age;
    //设置setter和getter方法实现外部对其修改和读取
    //采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。
    public int getAge(){
      return age;
    }

    public String getName(){
      return name;
    }

    public void setAge(int age){
      this.age = age;
    }

    public void setName(String name){
      this.name = name;
    }
}  

封装的好处就是在你想改变其中的属性的时候可以一步实现,比如你想把本例子中的age改为String类型,可以选择一个个对对象进行修改,但是如果实例的对象很多的话就会变的很繁琐(需要一个个去改,这样就会很累)。使用了封装这个方法以后只需要在setAge的方法中进行一处的修改就可以了。

 public void setAge(int age) {
        //转换即可
        this.age = String.valueOf(age);
    }  

不难看出: 封装可以使我们容易地修改类的内部实现,而无需修改使用了该类的客户代码

具体步骤中的第三条: 在getter/setter方法中加入属性控制语句,什么意思呢?举个栗子,比如你在使用setAge方法的时候不小心把age设成了500,就会闹出笑话,除非这个不是人(哈哈哈)这样就可以在setAge方法中设置一些条件使得写入不合理数据的时候会报错。

 public void setAge(int age) {
        if(age > 132){
            System.out.println("不是人?,请三思这个年龄是否正确?");  
        }else{
            this.age = age;
        }
        
    }  

在自己写的类中有很多的私有属性,难道要一个个的去设置setter和getter方法吗?

如果真的是这样那就一点都不合理了,毕竟java的IDE不会怎么的笨拙,所以肯定会有方法:

  1. 鼠标右键点击class的空白地方。
  2. 找到Source—>Generate Getters and Setters点击进入。
  3. 将自己需要的打钩即可。
Java基础篇——三大特性(封装)

封装好处

1. 良好的封装能够减少耦合。

2. 类内部的结构可以自由修改。

3. 可以对成员变量进行更精确的控制。

4. 隐藏信息,实现细节。

小结

封装就是隐藏自己的部分属性或者是全部属性,让外部只能调用特定的方法进行使用和更改。我们需要了解java中的权限修饰符和封装之间的关系,还有就是setter和getter方法的使用来实现私有变量的“接口”,好处还是很明显的。

文章来源:智云一二三科技

文章标题:Java基础篇——三大特性(封装)

文章地址:https://www.zhihuclub.com/180311.shtml

关于作者: 智云科技

热门文章

网站地图