1. 继承引入

①继承是什么?有什么用?
②继承的代码定义?
③哪些能继承、哪些不能继承?

就是很多类有相同的“属性”、“方法”,继承就是提取那些相同的组成一个新类,减少代码重复性!

继承的定义

能继承A的什么东西?(成员变量与局部变量是对应的,局部变量是定义在方法的形参中的,这样更好理解能继承的东西)

2. 权限修饰符

①权限修饰符是用来做什么的?有哪些?
②使用规划/标准?

企业标准:类的属性一般全“private”,然后用set、get方法进行“public”!如下图(其它的两个权限修饰符很少用,其它人用时能看懂就行):

3. 继承特点

①单继承、多层继承?
②Object类?
③就近原则(this/super)?

只支持单继承,不支持多继承(支持多层继承)

代码例子

为什么不能多继承(Java语言非常严谨)

Object类(祖宗类)

比如写代码时,你只创建了一个普通的A类,它无父类,但你new A的对象时却可以点一堆方法!

就近原则

代码例子(方法也同理,super.方法)

4. 方法的重写

①什么是方法的重写/有什么用?
②方法重写的代码实现(经典toString案例)?

方法重写的定义

重写时注意事项(后面3个了解下就行,一般开发都不用那两种权限修饰符)

代码例子

经典场景

我们打印对象时,其实是调用了s.toString()方法,用于打印对象的地址,@表示地址在……但如果我们想sout(s)时返回学生信息,就要在Student类中重写toString()方法!

5. 子类构造器

①什么是子类构造器?有什么特点?
②引入这东西的原因?

特点(下图最后那行加个“父类没有无参构造器、无参构造器私有了”)

具体代码例子(先调用父的,再执行子的构造器)

子类构造器必须要调用父类的构造器(不管调哪个,反正必须调用一个,没写时默认调用无参)

上面代码在那加个super父类构造器就不会报错了(父类无参的私有了,只能super调用有参的构造器才不会报错)

应用场景:构造器一般进行一些初始的赋值操作,有些子类它的属性没写,而是继承父类的,此时子类的构造器只初始化了本类属性,所以必须super下父类的,才能初始化所有的属性!
此时子类构造器的写法如下(子类只有skill属性,其它两个属性是父类的)

计算机硬件层次实现原理

注意事项:super要放构造器第1行,因为继承讲究“就近原则”,如果先初始化子类属性,再调用super,可以会导致子类中某些初始化的被super覆盖,导致初始化结果不符合预期。

6. 兄弟构造器

①兄弟构造器是什么东西/作用?
②兄弟构造器的代码实现(注意事项)?

主要用于一个类中的构造器调用同级构造器,一般是传入参数少的调用传入参数多的,方便默认某些参数的值。
具体代码例子(比如下面这个学生类中的两个构造器,第1个使用了this调用兄弟构造器,可以直接默认学校为“黑马程序员”)

注意事项