目录
一、上集回顾
在上篇日记中我们学习了,封装、包、static、代码块、类的打印。学习日记:Java类与对象2-CSDN博客
二、本篇目标
了解什么是继承并能写出有关继承的简单代码
三、本篇正文
1.继承的相关概念
简单来说就是将我们所写的多个类代码中的共同重复代码抽取出来,将这些代码构成一个新的类,进而实现代码复用。
如上图,我们发现在Dog、Cat类中黄框内的代码均为重复代码,我们便可以将它们抽取出来构成Animal类
我们讲这个由几个类的共同代码组成的类叫做父类,而那些被抽取的类叫做子类
2.继承的使用
我们怎么让子类使用父类呢?这需要一个贤者(关键字)的帮助,extends便是这个贤者(关键字)。
我们在子类的类名后面添加 extends + 父类的类名即可使二者建立联系。
用子类在main函数中实例化的名字 .(点)+父类中所想用的成员变量、行为,便可使用父类中对应的成员变量、行为。
如果我们对父类中的某个成员变量初始化,并在子类使用该成员变量时赋一个其他的值,且使用这个变量它会显示哪个值呢?
根据运行结果当父类和子类中均有该变量中的值时在子类中使用会显示子类的值,这就像你有辆兰博基尼,父母有辆迈巴赫,一般情况下你会先开自己的车。
如果你不想开自己的兰博基尼了,想开父母的迈巴赫,怎么办?和父母打声招呼就行了吧。
这里同理,子类用父类初始化的值,打声招呼就行了,只不过子类是用super这个关键字打招呼。
不过需要注意一下几点:1.在子类方法中访问父类成员变量、行为。2.不可在static修饰的方法中使用。
还有父类中被private修饰的成员变量、方法子类不能直接访问。可以通过建立Get,Set函数来访问。
Get Set函数的建立可以参考学习日记:java——类与对象1-CSDN博客
在java中支持家族传承:A是B的父类,B是的C的父类....... 也支持一个家庭里有多个小孩:A既是B的父类也是C的父类。但不支持一个孩子有多个爹 即A既是B的子类又是C的子类。
如果我们不想某个类成为父类,该怎么完成这个操作?简单对他进行绝育即可,我们需要请个绝育大夫——final。final放在该类的class前面即可完成绝育。
final修饰一个变量,会将其变为一个常量。
3.访问权限操作符补充
前两篇日记我们讲到了public,private两个访问权限操作符的范围。今天我们来讲一下最后两个访问权限操作符:default即默认访问权限操作符(不用在被修饰的变量、方法前写,写了反而是错的),被它修饰变量和方法能在同一个包中的同一类、同一个包中的不同类的进行操作。protected访问权限操作符,被它修饰变量和方法能在同一个包中的同一类、同一个包中的不同类、不同包中的子类进行操作。
四、作者的话
关于继承的知识如有错误欢迎指正。其实关于继承的内容还缺一个知识点,叫做组合。由于笔者并没有学会这个知识点故没写,欢迎大佬在评论区补充。昨天的笔记有近20位朋友点赞,并有十多位朋友进行了收藏,还有近400位朋友进行了阅读,非常感谢上述朋友的支持以及点进来的您 ,希望本篇日记能对您们有所帮助。若对本日记有内容、排版等方面的建议可以发在评论区或私信本人,万分感激!