JAVA继承
继承的好处:
减少代码的冗余性(重要性)
编写继承代码:
1、编写父类:
-
[修饰符] class 类名 extends Object{
属性; 方法;
}
- Object为超类
-
[修饰符] class 类名{
属性; 方法;
}
2、编写子类:
-
[修饰符] class 类名 extends 父类名{
编写独有属性和方法;
}
注意:
- 1、当一个没有指明继承哪个父类时,则默认继承Object类(超类)
- 2、Object类是所有类的父类(超类)
- 3、在子类中可以直接访问父类中的属性(前提是父类属性没有使用private修饰)
继承中的注意事项:
子类继承父类,但不能继承父类的构造方法
父类也叫做超类(基类),子类也叫做派生类
继承满足的条件:
- 猫是动物
继承两大特性:
-
一个类只能继承一个直接的父类,也就是类是单继承性
- (一个儿子只有一个亲爹)
-
类具有传递性
常见错误:
手写构造方法时,建议先编写无参构造,再编写需要的
当实例化子类时父类做了什么?
先执行父类的构造方法,在执行子类相匹配(有无参)的构造方法
如果子类构造方法中没有指明则默认调用父类无参构造方法
如果子类构造方法中指明父类哪个构造方法,则先执行父类相匹配的构造方法,然后再执行子类相匹配的构造方法
this与super关键字访问实例变量区别:
this关键字:
- 代表当前这个对象
- this可以访问本类中的实例变量、实例方法,也可以访问本类中的其他构造方法
- this还可以访问本类中的实例变量、实例方法
- 如果访问实例变量时,默认前面加this,但是当使用this,访问实例变量时,先在当前类中找该属性,如没有找到则去父类中找
super关键字:
-
表示超类或父类
-
super只能在子类中作用,可以访问父类中的实例变量、实例方法,还可以访问父类的构造方法
-
(super直接去父类中找)
-
super(*)等价于super()
- (不写默认)
重写:
Overwrite也叫做覆盖
子类方法名称必须与父类方法名称一致
参数列表一致
返回类型一致或父类方法返回类型的子类类型
修饰符一致(不能缩小范围)
子类不能重写:
- 构造方法不能被重写
- 属性不能重写
- 静态方法不能重写
- 私有方法不能重写