Java面向對象-Java類的繼承 與方法重寫


1,繼承定義以及基本使用

定義:子類能夠繼承父類的屬性和方法;

注意點:Java中只支持單繼承; 私有方法不能繼承;

package com.xuyigang1234.chp02.extend;

/**
 * 定義一個Animal類
 * */
public class Animal {
    private String name;
    private int age;
    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 void sys() {
        System.out.println("我是一個動物,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"歲。");        
    }

}
package com.xuyigang1234.chp02.extend;
/**
 * 定義Dog類,繼承自Animal類
 * 
 * 繼承的關鍵字為 extends
 * */

public class Dog extends Animal {
    
    public static void main(String[] args) {
        Dog dog=new Dog();
        dog.setName("小白");
        dog.setAge(1);
        dog.sys();
        
        
    }
}

實際上把父類Animal的共有方法get set以及say()方法都繼承了;

輸出:

我是一個動物,我的名字是:小白,我的只有1歲。

2、方法重寫

所謂方法的重寫 我們可以在子類中根據實際業務把父類的方法重寫;

package com.xuyigang1234.chp02.extend;
/**
 * 定義Dog類,繼承自Animal類
 * 
 * 繼承的關鍵字為 extends
 * */

public class Dog extends Animal {
    /**
     *  方法重寫
     * */
    public void sys() {
        System.out.println("我是一只小狗,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"歲。");        
    }
    public static void main(String[] args) {
        Dog dog=new Dog();
        dog.setName("小白");
        dog.setAge(1);
        dog.sys();
        
        
    }
}

輸出:

我是一只小狗,我的名字是:小白,我的只有1歲。
3,對象實例過程以及super關鍵字

對象實例化 先實例化調用父類構造方法,再調用子類實例化構造方法;

super關鍵主要是調用父類方法或者屬性;

 

package com.xuyigang1234.chp02.extend;

/**
 * 定義一個Animal類
 * */
public class Animal {
    private String name;
    private int age;
    
    public Animal() {
        System.out.println("無參父類構造方法");
    }
    
    public Animal(String name, int age) {
        System.out.println("有參父類構造方法");
        this.name=name;
        this.age=age;
    }
    
    
    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 void sys() {
        System.out.println("我是一個動物,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"歲。");        
    }

}

 

 

 

package com.xuyigang1234.chp02.extend;
/**
 * 定義Dog類,繼承自Animal類
 * 
 * 繼承的關鍵字為 extends
 * */

public class Dog extends Animal {
    private String maofa;
    
    public String getMaofa() {
        return maofa;
    }

    public void setMaofa(String maofa) {
        this.maofa = maofa;
    }

    public Dog() {
        System.out.println("無參子類構造方法");
    }
    
    public Dog(String name,int age,String maofa) {        
        super(name,age); //調用父類的構造方法
        this.maofa=maofa;
        System.out.println("有參子類構造方法");
    }
    /**
     *  方法重寫
     * */
    public void sys() {
        System.out.println("我是一只小狗,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"歲,有"+this.getMaofa()+"的毛發。");        
    }
    public static void main(String[] args) {
        Dog dog=new Dog("小白",1,"白色");
//        dog.setName("小白");
//        dog.setAge(1);
        dog.sys();
        
        
    }
}

 

輸出:

有參父類構造方法
有參子類構造方法
我是一只小狗,我的名字是:小白,我的只有1歲,有白色的毛發。

 


免責聲明!

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



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