Java 常用方法实例 继承 extends

什么是继承

就是程序内部出现相同的方法或者属性,每次都要弄好几遍,修改又不太方便,所以把这些方法和属性抽离出来放在一起,归类
等到用的时候,子类直接继承父类,就有了父类的方法和属性。
程序在执行的时候,先执行父类方法和属性,再执行子类的方法和属性。

举个例子

每次上厕所都需要
打开门,进入厕所,脱下裤子,小便,提上裤子,洗手,擦手,走出厕所,喝水,睡觉】

这几个步骤,而有些时候却是
打开门,进入厕所,脱下裤子,大便,看手机,擦屁股,提上裤子,洗手,擦手,走出厕所,吃饭,睡觉】

上面描述的是这件事儿

那我们就新建一个

动作组(类){
动作组(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
上一篇:Java 继承


下一篇:Java学习笔记76——类与类,类与接口,接口与接口之间的关系