什么是继承
就是程序内部出现相同的方法或者属性
,每次都要弄好几遍,修改又不太方便,所以把这些方法和属性抽离
出来放在一起,归类
。等到用的时候
,子类直接继承
父类,就有了父类的方法和属性。
程序在执行的时候,先执行
父类方法和属性,再执行
子类的方法和属性。
举个例子
每次上厕所都需要
【打开门,进入厕所,脱下裤子,
小便,提上裤子,洗手,擦手,走出厕所,
喝水,睡觉】
这几个步骤,而有些时候却是
【打开门,进入厕所,脱下裤子,
大便,看手机,擦屁股,提上裤子,洗手,擦手,走出厕所,
吃饭,睡觉】
上面描述的是这件事儿
那我们就新建一个
动作组(类){
动作组(A):打开门,进入厕所,脱下裤子,
动作组(B):提上裤子,洗手,擦手,走出厕所
}
把这些动作相同
的提取出来放到类里
面
动作1(子类) 继承
动作组(类){
动作a:小便,
动作b:喝水,睡觉
}
动作2(子类) 继承
动作组(类){
动作a:大便,看手机,擦屁股,
动作b:吃饭,睡觉
}
上面是程序模板,不调用的时候不执行
下面是真正的程序执行过程
创建动作1实例对象:
(发现继承,先执行继承)打开门,进入厕所,脱下裤子,
(再执行动作1)
小便,看手机,
创建动作2实例对象:
(发现继承,先执行继承)打开门,进入厕所,脱下裤子,
(再执行动作2)
大便,看手机,擦屁股,
class SuperClass {
private int n;
SuperClass(){
System.out.println("SuperClass()");
}
SuperClass(int n) {
System.out.println("SuperClass(int n)");
this.n = n;
}
}
// SubClass1 类继承
class SubClass1 extends SuperClass{
private int n;
SubClass1(){ // 自动调用父类的无参数构造器
System.out.println("SubClass1");
}
public SubClass1(int n){
super(300); // 调用父类中带有参数的构造器
System.out.println("SubClass1(int n):"+n);
this.n = n;
}
}
// SubClass2 类继承
class SubClass2 extends SuperClass{
private int n;
SubClass2(){
super(300); // 调用父类中带有参数的构造器
System.out.println("SubClass2");
}
public SubClass2(int n){ // 自动调用父类的无参数构造器
System.out.println("SubClass2(int n):"+n);
this.n = n;
}
}
public class TestSuperSub{
public static void main (String args[]){
System.out.println("------SubClass1 类继承------");
SubClass1 sc1 = new SubClass1();
SubClass1 sc2 = new SubClass1(100);
System.out.println("------SubClass2 类继承------");
SubClass2 sc3 = new SubClass2();
SubClass2 sc4 = new SubClass2(200);
}
}
执行结果
------SubClass1 类继承------
吃饭
赚钱
睡觉
养家:100
------SubClass2 类继承------
睡觉
美容
吃饭
购物:200