java se部分複習面向對象特性之繼承

  • 繼承是面向對象三大特性之一,所謂繼承,可以簡單理解爲子類繼承父類,子類擁有父類的屬性和方法,子類可以對父類的屬性和方法進行修改,子類也可以增加方法和屬性;
  • 通過繼承,我們可以簡化類的設計,從而直接擁有某個類的方法和屬性
  • 通過繼承,我們可以將一些類中具有相同屬性和行爲特徵(方法)抽取出來,抽象成一個父類,讓這個父類擁有這些屬性和方法,從而在定義其他子類時,通過繼承父類的方法來簡化設計,達到繼承這個特性;
  • 比如,現實生活中的很多例子,我們在動物園中肯定會見到各種各樣的動物,這些動物都有一些特徵(可以理解爲java中的屬性)和行爲(可以理解爲java中的方法),比如,動物都有年齡,名字等屬性,有喫、喝、睡覺等行爲特徵,我們把這些屬性和方法定義爲一個animals類,然後讓各種動物(貓,狗)繼承animals這個類,從而簡化了類的設計,在寫代碼的同時可以簡化;
//動物類
public class Animals {
    String name;
    int age;
    String sex;

    public Animals() {
    }

    //父類中的方法
    public void eat(){
        System.out.println(this.name+"正在喫飯");
    }
    public void drink(){
        System.out.println(this.name+"正在喝水");
    }
    public void sleep(){
        System.out.println(this.name+"正在睡覺");
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }

    public Animals(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public Animals(String name) {
        this.name = name;
    }
}

	
public class Cat extends Animals {
    public Cat(String name, int age, String sex) {
        super(name, age, sex);
    }

    public Cat(String name) {
        super(name);
    }
    //重寫方法
    @Override
    public void eat() {
        super.eat();
    }

    @Override
    public void drink() {
        super.drink();
    }

    @Override
    public void sleep() {
        super.sleep();
    }
}

public class Test {
    public static void main(String[] args) {
        Cat cat = new Cat("波斯貓");
        cat.eat();
        System.out.println("喫飽了,喝點水");
        cat.drink();
        System.out.println("喫飽喝足之後,躺會");
        cat.sleep();
    }
}

運行結果爲:
在這裏插入圖片描述

  • 以上實例我個人覺得可以很好的理解繼承這個特性吧

  • 關於java中繼承的特點

    • java中是單繼承,所謂單繼承,就是子類只能繼承一個父類,不能繼承多個父類
    • java中支持多層繼承關係,一個類可以是多個類的父親,也可以是一個類的子類
  • 使用繼承時,子類應該是更加詳細具體的父類,我們可以使用is關鍵字來判斷是否可以使用繼承

  • 重寫方法
    在繼承關係下,子類覆蓋父類的方法;

    • 方法名相同,
    • 參數相同
    • 返回值類型兼容,父類的類型一定要能包容子類的類型
  • 關於繼承

    • 父類有的,子類一定有;
    • 父類沒有的,子類可以增加;
    • 父類有的,子類可以修改重寫
  • super關鍵字
    super關鍵字代表父類的對象引用,在子類中,通過super可以訪問父類對象的屬性和方法;
    在上面創建Cat這個類的時候,我使用了一個只有name參數的構造方法,而父類animals中我沒有寫只有name的構造方法,所以報錯了,我才發現繼承中構造方法有幾個需要特別注意的地方

  • 關於繼承中構造方法的說明

    • 在繼承關係中,構造方法是不能被繼承的;
    • 在子類調用構造方法時,首先會調用父類的構造方法;
    • 如果在子類中調用構造方法時沒有指定父類的構造方法,會默認使用父類的無參構造方法
    • 可以使用supper(參數)來指定調用父類的構造方法,super()語句必須放在第一行來執行
  • 方法重載與方法重寫的區別

    • 方法重載是在一個類中,方法名相同,方法參數不同的一些方法;
    • 方法重寫是在繼承關係下,,子類覆蓋父類的方法,要求名字相同,參數相同,返回值類型小於父類的返回值類型,可以兼容返回值類型;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章