📌Java基础_Day07
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调用兄弟构造器,可以直接默认学校为“黑马程序员”)
注意事项






