作者:困了电视剧
专栏:《JavaSE语法与底层详解》
文章分布:这是一篇关于Java面向对象三大特性——封装的文章,在本篇文章中我会分享封装的一些基础概念以及实现。
目录
封装定义和优点
访问限定符实现封装
private限定符
private修饰的成员在继承中的行为
protected限定符
封装定义和优点
封装:每个对象都包含有它能进行操作的所有信息,这个特性称为封装。这样的方法包含在类中,通过类的实例来实现。
优点:
1.封装还避免了命名冲突的问题,封装有隔离作用,不同的类中可以有相同名称的方法和属性,但不会混淆,也可以减少耦合(比如实现界面和逻辑分离)
2 .可以让类对外接口不变,内部可以实现自由的修改
3.从安全性考虑,封装使对代码的修改更加安全和容易,封装明确的指出了哪些属性和方法是外部可以访问的
4.因为封装的类功能相对独立,因此能更好的实现代码复用
5.从设计角度来讲,封装可以对外屏蔽一些重要的信息。注意:这里的代码保护不是指代码本身的加密,而是对不想外部更改的代码通过私有实现。
通俗易懂地来说:
封装就是将一个类装进一个“箱子”中,他会实现一些功能,但是程序员不用知道他实现的“细节”,自然也不会对其内容进行修改,只需要拿到运算完成的结果就行了。这样不仅是代码逻辑更加清晰还使代码的安全性更高等。
访问限定符实现封装
private限定符
private修饰的成员权限最低,只能在类中进行访问,我们在使用的过程中如果在其他类中需要对其进行修改,需要使用get和set方法将其带出来,否则就会报错。
private修饰的成员在继承中的行为
当子类继承父类时,子类中会有父类中的成员变量和成员方法等,但是一个成员被private修饰后只能在当前类中使用,移到子类中是否是由原先的只能被父类使用改为只能被子类使用了呢?
答案是不能,此时的name无法在子类中被使用,要想对其进行交互还是需要 get和set方法,但是在堆区进行分配空间相关的事情时,他仍和其他的成员变量进行一样的行为,他只是在子类中无法进行直接访问即父类中private成员变量虽然在子类中不能直接访问,但是也继承到子类中了。
protected限定符
package demo1;
public class Test01 {
protected int a=10;
}
在不同包中只有是父类和子类的关系,子类中才能直接对父类的成员进行访问
同为一个父类的子类之间无法访问被protected修饰的成员。