Java面向对象编程:封装,继承,多态

Java面向对象的三大特征:

封装:通过Java的类来实现数据和操作方法的封装,对外界可以将每一个Java类都视为一个黑箱,只需调用该黑箱提供的方法即可完成你想要的操作。

继承:通过类的继承,将统一的功能集中放在父类中,实现代码的重用和可维护性。

多态:通过重载、重写与覆盖,实现不同类的不同形态特征。


一个被定义成private的类成员为此类私有,它不能被该类外的所有代码访问,包括子类。


如果子类中不显式调用父类的构造函数,则会调用父类的默认构造函数(如果有的话)。


父类和子类的相互转换

在Java中我们可以将子类的引用赋给父类的对象,那么这时子类中那些不是从父类继承来的成员将不再可见,我们可以在通过强制转换类型将父类再转换成子类类型,那些成员又变得可见了,那么转换的时候发生了啥?


一个类在构造出来的时候,先把其各级父类都构造出来,一家人就是要齐齐整整嘛。这里写个测试例子,看看能不能拿到父类引用。

image

看来是拿不到父类实例的引用了。


必须被继承的类:抽象类

不能被继承的类:最终类


父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。


final方法

如果不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。

使用final方法的原因有两个:

把方法锁定,防止任何继承类修改它的意义和实现。

高效,编译器在遇到final方法时会转入内嵌机制,大大提高执行效率。


对于final static类型的变量,static使得变量只存在一个副本,final使得它不能改变。


final成员赋值规定:

final成员能且只能被初始化一次。

final成员必须在声明时或者在构造方法中被初始化,而不能在其他的地方被初始化。


类,抽象类和接口的区别?

猜你喜欢

转载自www.cnblogs.com/tuhooo/p/9049133.html