java中的繼承(一)


    在java中,所有的類都有一個默認的父類Object,即使我們沒有顯式的去繼承這個類。在Object類中定義了一些方法,其中有幾個方法是我們必須掌握的,比如equals方法,hashCode方法,wait方法,notify方法,getClass方法等。這些方法我會在以后文章給大家介紹,今天我們要討論的是java中的繼承。

    在繼承關系中一般兩個角色,父類和子類,其中父類也叫基類,子類也叫派生類。比如Dog類和Animal類,Dog類就是子類,Animal類就是父類,其中子類也就是Dog類繼承了父類也就是Animal類的非私有屬性和方法,同時子類可以增加子類特有的屬性和方法,並且子類可以重寫父類的方法。使用繼承首先可以減少大量的重復性代碼,把公共的代碼提取出來放到父類中同時也方便管理。

   接下來我們用代碼來進一步解釋,首先定義一個父類Animal類:

public class Animal {
    
     private Integer age;
    
     public Animal(){
         System.out.println("Animal construct method");
     }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
     
    public void eat(){
        System.out.println("eat food");
    }
}

然后我們在定義一個dog類:

public class Dog extends Animal{
     private String color; //毛色
     
     public Dog(String color){
         this.color = color;
     }
     
     public void run(){
         System.out.println("Dog is running");
     }
     
     @Override
     public void eat(){
        System.out.println("dog eat bone"); 
     }
}

在Dog類中我們添加了子類自己的方法和屬性並重寫了父類的一個方法。在程序中的調用:

public static void main(String[] args) {
         Dog dog = new Dog("紅色");
         dog.eat();
}


控制台打印:
Animal construct method
dog eat bone

這里需要說的我們在new Dog類的時候父類的構造方法也會執行並且會先於子類執行。定義一個cat類:

public class Cat extends Animal{
    
     @Override
     public void eat(){
        super.eat();
        System.out.println("cat eat finsh"); 
     }
}

調用Cat的eat方法發現不只打印了“cat eat finsh”還打印了父類的“eat  food”。當父類方法和子類方法重名時,可以通過super關鍵字強制訪問父類的變量和方法並且在new子類對象的過程中,也可以通過super關鍵字調用父類的構造方法,沒有使用super的時候默認調用父類的默認的構造方法,父類的構造方法要先於子類執行。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM