[Java] 繼承

摘要:繼承

繼承:子類別繼承父類別,避免重複的行為與實作定義。子類別與父類別會有一種is-a的關係。

SwordsMan 是一種Role。


//Role.java
public class Role {
    private String _name;
    private int _level;
    
    public void SetName(String name){
        this._name = name;
    }
    public String GetName(){
        return _name;
    }
     public void SetLevel(int level){
        this._level = level;
    }
    public int GetLeve(){
        return _level;
    }
    public void Print(){
        System.out.println("姓名:" + _name );
        System.out.println("等級:" + String.valueOf(_level));
    }
}

//SwordsMan.java
//繼承Role並且新增fight方法。
public class SwordsMan extends Role{
    public SwordsMan(String name, int level){
        SetName(name);
        SetLevel(level);
    }
    public void fight(){
        System.out.println("揮劍攻擊"); 
    }
}
//抽象類別
public abstract class Role{
    ...略
    public abstract void fight();
}

public class SwordsMan extends Role{
    //Override 抽象類別的fight方法
    public void fight(){
        System.out.println("揮劍攻擊"); 
    }
}

子類別可以直接存取父類別Protected的成員


//Role.java
public abstract class Role{
    protected String _name;
    protected int _level;
    public abstract void fight();
}

//Magician.java
public class Magician extends Role{
    public Magician(String name, int level){
        this._name = name;
        this._level = level;
    }
    public void fight(){
        System.out.println("魔法攻擊");
    }
    public void Print(){
        System.out.println("姓名" + this._name);
        System.out.println("Level" + this._level);
    }
}

//Main.java
Magician mg = new Magician("Allen",100);
mg.Print();