extends

是class之间的继承,继承后子类会有父类的全部方法和属性

public class student extends person{

}

ctrl+h就可以出现继承树

下面这张图注意三个system的输出

super.+父类的方法或属性,可以调用父类的东西

 

 可以通过调用子类去直接调用父类的方法

 内存机制

子类和父类是同一个对象,地址是一样的。

 

 注意

1.子类可以继承父类的属性和行为,但是不能继承父类的构造器

2.一个类只能继承一个直接父类

3.java不支持多继承(一个子类不能同时继承多个父类)但是可以多层继承(子-父-爷)

4.所有类都是object的子类

5.子类不能直接访问父类的私有对象和方法。但是可以直接访问父类的静态对象和属性(不能继承因为静态对象只能存在一份,但是可以直接访问。用类.对象就可以了)

 

原则:

1.在子类方法中访问成员变量/方法遵循就近原则:先子类局部范围找,然后子类成员范围找,然后父类成员范围找,再没有就报错。比如下面,子类和父类都拥有名字一样的方法 run(),这时候会调用子类中的run方法。

 

 如果在子类中要指定调用子类的或父类的,可以直接在前面加上this.子类方法/变量或者super.父类方法/变量。

继承后构造器的特点:

 子类的全部构造器会默认先访问父类构造器再执行自己的构造器:

 

 调用父类的有参构造器:super(name,age);

 

 this和·super:

 

 

如果用户不填默认值: