面向对象:封装性、继承性、多态性总结
作者:互联网
文章目录
一、封装性
封装性就是将对象内部的复杂性隐藏起来,只是对外部公开简单的接口,便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说,就是把该隐藏的隐藏起来,该暴露的暴露出来。
1.针对属性的封装性
将类的属性设为私有的(private),并提供set或者get方法。此时,针对属性就体现了封装性。
2.针对方法的封装性
不对外暴露的私有方法
3.权限修饰符的大小关系
private < 缺省 < protected < public
4.具体的权限范围
二、继承性
1.继承性的好处
①、减少了代码的冗余,提高了代码的复用性
②、便于功能的扩展
③、为多态性的使用提供了前提
2.子类和父类的关系
①、一旦子类A继承了父类B以后,子类A中就获取了父类B中声明的所有属性和方法(特别的:父类中声明为private的属性或者方法,子类继承父类以后,仍然认为子类继承了父类中的私有结构,只是因为封装性的影响,使得子类不能直接调用父类的私有结果。)
②、子类继承父类以后,还可以声明自己特有的属性或者方法,用来实现功能的拓展。
③、格式:class A extends B
注意点:
①、一个类可以被多个类继承。
②、一个类只能有一个父类。
③、子类直接继承的父类为:直接父类、 间接继承的父类:间接父类(理解为爷爷类)。
三、多态性
1.多态性的理解
一个事物的多种形态
2.何为多态性
父类的引用指向子类的对象。
举例:
Person p = new Man();
这对Man来说也叫做向上转型
3.多态的使用
虚拟方法调用:有了对象的多态性之后,我们在编译期,只能调用父类中声明的方法,但是在运行期,我们实际执行的是子类重写父类的方法。(多态对属性不管用)
4.向下转型
有了对象的多态性以后,内存中实际上是加载了子类特有的属性和方法的,但是由于变量声明为父类类型,导致编译时,只能调用父类中声明的属性和方法。子类特有的属性和方法不能调用。如何才能调用子类特的属性和方法?使用向下转型。
向下转型后,就可以使用子类特有的方法和属性了。
5.instanceof关键字
在向下转型的过程中,有可能会出现 ClassCastException 的异常,所以在转型之前,使用 instanceof来对该类进行判断。
举例:
if(a instanceof A){// 判断对象a是否是类A的实例,如果是返回true 否则返回 false
A a = (A)a;//将对象a转为类A的对象
}
标签:封装,子类,面向对象,多态性,继承性,父类,方法,属性 来源: https://blog.csdn.net/weixin_44076559/article/details/113801526