1. 程式人生 > >c#中的裏氏轉換和Java中強制類型轉換在多態中的應用

c#中的裏氏轉換和Java中強制類型轉換在多態中的應用

readline color extends pre pri console AS 定義 spa

在c#中:

註意:
子類並沒有繼承父類的構造函數,而是會默認調用父類那個無參數的構造函數。
如果一個子類繼承了一個父類,那麽這個子類除了可以使用自己的成員外,還可以使用從父類那裏繼承過來的成員。但是父類永遠都只能使用自己的成員,而不能使用子類的成員。
子類之間也不能互相使用對方的成員。
裏氏轉換的概念:
1)、子類可以賦值給父類
2)、如果父類中裝的是子類對象,那麽可以講這個父類強轉為子類對象。
namespace 裏氏轉換_接口練習
{
    class Program
    {
        static void Main(string[] args)
        {
            
//測試1 //IFavorateFood iff = new Cat();//子類可以賦值給父類 //iff.Food(); //IVoice iv = new Cat(); //iv.Voice() //測試2 //IVoice Pvoice = new Cat(); //Pvoice.Voice();//只能調用IVoice中的方法 //Cat cat = Pvoice as Cat;//如果父類裝的子類對象,則可以將父類強轉為子類對象
//cat.Food(); //測試3 IVoice Pvoice = new Cat(); IFavorateFood pFavorateFood = Pvoice as IFavorateFood; pFavorateFood.Food(); Console.ReadLine(); } } } public class Cat : IFavorateFood, IVoice { public void Food() { Console.WriteLine(
"我喜歡的事物是老鼠"); } public void Voice() { Console.WriteLine("喵喵喵"); } } interface IFavorateFood { void Food(); } interface IVoice { void Voice(); }

Java中強制類型轉換在多態中的應用:

//動物類
abstract class Animal{

    String name;

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

    public abstract void run();
}

//老鼠
class  Mouse extends Animal{


    public Mouse(String name){
        super(name);
    }
    
    public  void run(){
        System.out.println(name+"四條腿慢慢的走!");
    }

    //老鼠特有方法---打洞
    public void dig(){
        System.out.println("老鼠在打洞..");
    }
}



//
class Fish extends Animal{

    public Fish(String name){
        super(name);
    }

    public  void run(){
        System.out.println(name+"搖搖尾巴遊啊遊 !");
    }


    //吹泡泡
    public void bubble(){
        System.out.println(name+"吹泡泡...!");
    }

}




class Demo2 
{
    public static void main(String[] args) 
    {
        /*
        Animal a = new Mouse("老鼠");  //多態
        //調用子類特有的方法
        Mouse m  = (Mouse)a;  //強制類型轉換
        m.dig();
        */

        Mouse m = new Mouse("米老鼠");
        Fish f = new Fish("草魚");

        print(f);

    }


    //需求: 定義一個函數可以接收任意類型的動物對象,在函數內部要調用到動物特有的方法。
    public static void print(Animal a){ // Animal a   = new Mouse("米老鼠");
        if(a instanceof Fish){
            Fish f = (Fish)a;
            f.bubble();
        }else if(a instanceof Mouse){
            Mouse m = (Mouse)a;
            m.dig();
        }
    }
}

c#中的裏氏轉換和Java中強制類型轉換在多態中的應用