Ejemplo n.º 1
0
    public static void Main(string[] args)
    {
        IDuck duck1 = new RealDuck();

        MakeDuckSwim(duck1);
        IDuck duck2 = new ElectricDuck();

        MakeDuckSwim(duck2);
    }
Ejemplo n.º 2
0
    public static void Main(string[] args)
    {
        RealDuck duck = new RealDuck();

        duck.Hello();
        duck.Swim();
        duck.SetSwim(new SwimDisability());
        duck.Swim();

        Console.WriteLine();

        WoodenDuck woodenDuck = new WoodenDuck();

        woodenDuck.Hello();
        woodenDuck.Fly();
    }
Ejemplo n.º 3
0
///实现多态有三种方法——虚方法,抽象类,接口
///那么具体怎么选择呢
///当提供给你的各个类中可以抽象出一个父类,并且父类可以写出各个子类共有的一个方法,
///但是你因为各个子类的这个方法实现内容是不同的,所以不知道怎么在父类中写这个方法,
///此时选用抽象类的方法,实现多态。
///反之你可以写出父类中的这个共同的方法,且要求你创建父类的对象则用虚方法
///当给你的这几个类,你找不到一个可以抽象出来的父类,但是他们都有一个共同的行为(比如说鸟类,和飞机,都可以飞,但是你找不到父类)
///此时,你就可以选用接口,来实现多态

        ///练习:真鸭子会游泳,橡皮鸭子会游泳,木头鸭子不会游泳,用多态实现
        ///我们可以分析一下,我们可以抽象出一个父类,但是虚方法和抽象类,你没法用,因为木头鸭子-不会游泳,所以你写不出来一个共同方法
        static void Main(string[] args)
        {
            Iswiming rd = new RealDuck();

            rd.Swim();

            MuDuck md = new MuDuck();

            md.Say();

            Iswiming xd = new XPDuck();

            xd.Swim();


            Console.ReadKey();
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            Duck real = new RealDuck();

            real.Display();
            real.PerformFly();
            real.PerformQuack();

            real.SetFlyBehavior(new FlyNoWay());
            real.PerformFly();

            Duck model = new ModelDuck();

            model.Display();
            model.PerformFly();
            model.PerformQuack();

            model.SetQuackBehavior(new DuckQuack());
            model.PerformQuack();

            Console.Read();
        }