package com;
public class Test {
static {
}
{
}
public static void main(String[] args) {
}
}
什么是继承?:java允许一个类使用extends与另一个类建立父子关系 这就是继承
继承的格式?:子类extends父类
继承概述:子类继承父类就可以得到父类的属性和行为
继承的优点:提高代码的复用性,多个子类相同的代码可以放到父类里增强了类的扩展
继承的设计规范:子类共有属性和行为放在父类,子类独有的行为和属性放在子类里
内存原理:
![微信图片_20220707133152.png](https:
继承特点:子类可以继承父类的属性和行为,但是不能继承父类的构造器
java是单继承模式:一个子类只能继承一个直接父类
java不支持多继承,但是可以多层继承
Java所有类都是Object的子类 万物皆对象
个人认为 Java可以继承父类的私有成员只是不能直接访问
子类可以继承父类的静态成员吗? 共享不等于继承
继承后的成员方法和成员变量的访问特点:就近原则 this.子类自己的成员变量/方法
在子类的方法中访问父类的的成员要用 super.父类的成员变量或方法
继承后重写父类方法:可以理解为,为父类的方法锦上添花 重写建议使用@Override注解
@Override 可读性好,可以检测是否正确重写
重写规则:子类重写的方法名称和形参列表要与父类被重写的方法名称和形参列表一致(重点)
父类的私有方法不能重写
父类的静态方法不能重写
重写方法的权限要大于被重写方法的权限 private<缺省<protected<public
继承后子类构造器的特点:子类的全部构造器会默认先访问父类的无参数构造器在执行自己的数据
why:因为现有爸爸才有儿子,需要先访问父类的构造器初始化父类的数据,在调用自己的构造器初始化自己
代码层面:默认子类构造器第一行都有一个super()访问父类的无参数构造器写不写都有
继承后子类构造器访问父类有参构造器:调用父类有参构造器初始化父类数据
super(....)根据参数访问父类构造器
this访问子类当前对象的成员
super:在子类方法中指定访问父类的成员
this(....)访问本类兄弟构造器
super(.....)在本类构造器中指定访问父类的构造器
注意事项:super(....)必须放在第一行,this(.....)也必须放在第一行,因此二者不能共存一个构造器