1、面向对象的第二大特征——继承性,继承性的特点在于可以重用父类中的结构并且可以扩充已有类的功能
2、良好的代码:结构合理、便于维护、可重用性高
3、class 子类 extends 父类 { }
很多情况下会把子类称为派生类,把父类称为超类(SuperClass)
子类继承父类并扩展后的内存分析情况:
4、在进行子类对象实例化时一定要先实例化父类对象。
现在即使没有进行父类对象的实例化,也会由系统自动调用父类的构造方法(实例化父类对象),默认情况下的子类对象实例化流程里面会自动实例化父类对象,相当于子类的构造方法里隐含了一个“super()”
5、super()表示子类构造调用父类构造的语句,该语句只允许放在子类构造方法的首行。如果父类中有无参构造方法,子类构造方法中的super()写与不写均可,但是,如果父类中不含有无参构造方法,则必须在子类构造方法中写上super(参数)指明调用父类的含参构造方法。
6、super()与this()都可以调用构造方法,this是调用本类的构造方法,且都必须放在构造方法的首行,因此,两个方法不允许同时出现。
7、Java中不允许多重继承,只允许多层继承A ,B extends A,C extends B,为避免结构混乱,一般不超过三层
8、子类可以继承父类中所有的操作结构,但是对于私有操作属于隐式继承(不能直接访问,但可以间接访问),非私有操作属于显式继承。
package com.demo;
class Person {
private String name ;
public void setName(String name) {
this.name = name ;
}
public String getName() {
return this.name ;
}
}
class Student extends Person {
public Student(String name) {
setName(name) ; //设置name属性内容
}
public void fun() {
// System.out.println(name); // 直接访问会出错
System.out.println(getName()); // 间接访问
}
}
public class YinShiExtends {
public static void main(String[] args) {
Student stu = new Student("aaa");
stu.fun();
}
}