TestExtends
1.继承的作用及格式
继承:子类继承父类--->代码的复用性
-
主要作用:子类可以通过继承父类获取父类中的属性和方法
-
格式:public class Son extends Father
extends---->关键字,用于继承
-
单一继承性(一个子类只能有一个父类)
-
子类可以有自己的都有方法,功能扩展性
-
继承也存在多重继承的关系(一个子类可以有父类,爷爷类,祖类........)
//父类: class Father { String name; int age; public void show(){ System.out.println("show father"); } } //子类: class Son extends Father { public Son(){ System.out.println("Son的无参构造方法"); } }
2.继承的构造函数
-
当存在继承关系是,执行子类的构造方法,要先去执行父类的无参构造方法,在执行子类的构造方法
-
当存在继承关系是,父类必须得有无参的构造方法,不然会报错
//父类: class Father { String name; int age; public Father(){ System.out.println("Father的无参构造方法"); } public void show(){ System.out.println("show father"); } } //子类: class Son extends Father { public Son(){ //super(); System.out.println("Son的无参构造方法"); } } //TestExtends类: public class TestExtends { public static void main(String[] args) { Son son = new Son();//子类的引用指向子类对象 //输出了: /* Father的无参构造方法 Son的无参构造方法 */ } }
-
super--->父类对象 this--->当前对象
super()--->父类的构造方法 this()--->当前对象的构造方法
-
执行子类构造方法时,要先去调用父类的无参构造方法,可以理解为:编译器给每个子类的构造方法都加了super()执行父类的无参构造方法,当我们显式的为子类构造方法提供super(),编译器就不会默认提供super().
-
super()方法必须放在后遭方法的第一行
3.父类的引用指向子类对象
//TestExtends类: public class TestExtends { public static void main(String[] args) { Son son = new Son(); //子类的引用指向子类对象 Father father1 = new Father(); //父类的引用指向父类对象 Father father2 = new Son(); //父类的引用指向子类对象 } }
-
父类的引用可以指向子类的对象,也叫做子类对象向上造型为父类类型。
-
当父类的引用指向子类对象时,父类的引用只能访问父类的属性和方法。