关于Java的封装 继承 多态
说到继承我们首先会想到继承的关键字:extends.
通过继承可以获得父类的属性和方法,子类具有父类的功能,同时也具有自己的特殊功能。
继承具有开闭原则:对修改关闭,对扩展打开,也就是说可以通过继承拓展之后的功能而不是修改代码
单继承和多继承:
单继承:一个子类只能有一个直接父类。
多继承:一个子类可以有多个直接父类。
Java只支持单继承,但也支持多重继承,例如:C→B→A C是继承体系中最基础的功能,C中定义了最基本的功能
Java不支持多继承的原因:如果两个人父类有同样的方法,会出现不确定性。
多继承在Java中通过多实现来完成。例如接口。
this super:
super可以访问父类的属性和方法
super();调用当前无参数的构造方法,也就是父类的构造方法;
super和this只能放在构造方法的第一行。
super创建子类对象首先会根据父类的构造方法初始化,一定是先调用父类的初始化方法在调用子类的初始化方法。
子类和父类变量同名可以用super。
this();调用父类无参数的构造方法。
子类不能直接访问父类的私有内容,但是子类继承了父类的私有内容,(反射获得)
多态:一种事物多种形态。
多态不仅可以减少代码量,还可以提高代码的可扩展性和可维护性
多态是指同一个实现接口,使用不同的实例而执行不同的操作
继承是多态的基础,没有继承就没有多态
多态实现的条件:1.继承 2.重写方法 3.父类引用指向子类对象
多态的类型转换:
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
多态:
成员方法:运行时看右面;
成员属性:编译时看左面
静态方法:编译时看左面
override关键字:
重写父类中的virtual修饰的方法,实现多态。
重写只针对方法不针对属性
封装:将属性方法提取到类中,权限修饰符限制某些属性方法的访问权限。
封装的意义在于保护或者防止代码(数据)被我们无意中破坏。在面向对象程序设计中数据被看作是一个中心的元素并且和使用它的函数结合的很密切,从而保护它不被其它的函数意外的修改。
封装提供了一个有效的途径来保护数据不被意外的破坏。相比我们将数据(用域来实现)在程序中定义为公用的(public)我们将它们(fields)定义为私有的(privat)在很多方面会更好。私有的数据可以用两种方式来间接的控制。第一种方法,我们使用传统的存、取方法。第二种方法我们用属性(property)。