java学习day13---(继承、super关键字以及方法重写)
一、继承
子类可以继承父类的属性和方法,但不能继承私有化的部分以及构造函数,另外子类可以有独特的属性和方法
可以说,子类是比父类更丰富的
作用:提高代码重复使用率
继承关系
父类更通用,子类更具体
父类不能调用子类的独有方法
语法
关键字:extends 子类 extends 父类
不能继承私有化和构造函数,封装和继承不存在矛盾的
创建子类对象时,子类在构造函数中会隐式的调用父类的构造函数
使用super();
java中类与类之间,只支持单继承,但是可以间接多继承
继承缺陷:耦合度太高 耦合度:联系性 联系性太强就会出现一处错,处处错,修改也麻烦
任何类都直接或间接继承Object类 隐式继承
静态方法的继承问题
都可以被继承,调用的都是同一个方法
二、super关键字
super与this对比学习
this指向对象 super 指向对象的特征
this是对象可以直接输出,super是特征不能输出
特征就是属性和方法,对象是一个整体
super指的是父类的特征
this在方法中调用,通过this可以调用属性和方法
super只能在继承关系中子类的方法中使用,指向的是对象的特征
可以用super.属性和方法来调用父类的属性和方法
super调用的是父类的属性和方法 this调用的是当前对象的属性和方法
super调用父类的构造函数也需要在第一行调用,子类在构造函数中会隐式的调用父类的构造函数
如果父类中没有无参构造,子类需要用super显示在调用父类的有参构造函数
无论如何都要调用父类的构造函数,只能调用一个并且只能在第一行调用
子类为什么要调用父类的构造函数?
提高代码重复利用率,要说出原因,过程
子类继承了父类的属性,但却没有继承构造函数,因此在给继承的属性赋值的时候就需要调用父类的构造函数
当然也可以在子类自己写set函数去赋值,但是没有必要
三、方法的重写(覆盖)
父类的方法在子类中不适用,如:动物类都会吃,但是吃什么,每个动物都不一样,因此需要在子类重写吃这个方法
重写override,前提条件是继承,在子类中重写
一些问题
1.子类的方法的权限修饰符必须大于等于父类
2.返回值类型、方法名、参数类型和父类保持一致
3.子类抛出异常不能比父类多
4.子类重写的方法体中,调用父类的方法时不能省略super
5.静态方法可以继承,不能被重写,后面多态可以理解
6.重写的子类方法有没有必要去调用父类方法
有时候是需要调用到

浙公网安备 33010602011771号