-
继承
a.为什么需要继承:为了解决成员重复问题。
b.从代码上而言:在我们描述若干个类的时候,发现这些类中有大部分相同的成员,所以就可以把这部分重复的内容抽取出来,用另一个类描述,我们抽出来新建的类就成为父类,其他的类为子类,父类和子类之间的继承关系,用extends来表示。
c.从业务逻辑上而言:父类和子类必须属于同一个种类
d.继承的好处
继承的出现提高了代码的复用性,提高了软件开发效率
继承的出现让类与类之间产生了关系,提供了多态的前提。 -
单继承与多继承
类与类之间为单继承,接口与接口之间为多继承
继承之间是有传递性的,Object类是任何一个类的最终父类 -
子父类中成员的一些特点
a.成员变量:
如果父类中有(非私有),而子类中没有,则访问父类的
如果父类中没有,而子类中有,则访问子类的
如果父类中有(非私有),子类中有 访问子类的
如果父类中有(非私有),子类没有,但是子类有同名静态变量所以先访问子类的静态
当子父类中出现了同名成员变量时,在子类中若要访问父类中的成员变量,必须使用关键字super来完成
this存的是当前对象的地址,用于区分调用者
super指向的是其父类的字节码空间(父类空间)
b.成员函数:当在程序中通过对象调用方法,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类不存在就会执行父类中相应的方法。
成员函数特殊情况——覆盖
子类中出现与父类一模一样的方法时,会出现覆盖操作,也成为override重写,复写或覆盖
上边父类和子类的成员函数show( )相同,所以这个时候子类就要重写父类的show()。
重写的应用:当子类需要父类的功能,而功能主体子类有自己特有内容时,可以复写父类中的方法,这样即沿袭了父类的功能,有定义了子类特有的内容。
重写需要注意的问题:
1.子类方法覆盖父类方法,必须要保证权限大于等于父类权限
2.静态只能覆盖静态,或者被静态覆盖,意思就是*静态函数不存在重写***。
3.重写时,必须和原函数的表达形式一模一样。
c.构造函数
在创建子类对象时,父类的构造函数会先执行,因为子类中所有构造函数的第一行有默认的隐士super();**语句。
为什么子类对象初始化都要访问父类中的构造函数?因为子类继承了父类的内容,所以创建对象时必须要先看父类是如何对内容进行初始化的 . -
final关键字
为什么要出现final关键字?
有些类在描述完之后,不想被继承,或者有些类在中的部分方法功能是固定的,子类不能重写。可是当子类继承了这些特殊类之后,就可以对其中的方法进行重写,因此要解决这种问题,就需要加fianl关键字。
fianl可以修饰类,类的成员,以及局部变量。
a.final修饰类不可以被继承,但是可以继承其他类
b.final修饰的方法不可以被覆盖,但父类中没有被final修饰方法,子类覆盖后可以加final
c.final修饰的变量称为常量,这些变量只能赋值一次,定义的时候必须有初始值
c.final修饰的引用类型变量,表示该引用变量的引用不能变,而不是引用所指的对象中的数据还是可以变化的
final修饰变量 表示该变量所存储的数据的地址不可更改
JavaSE--继承
猜你喜欢
转载自blog.csdn.net/qq_45161607/article/details/103380723
今日推荐
周排行