zoukankan      html  css  js  c++  java
  • 多态的练习题

    看程序,说出运算结果

    题目(1)

    /*
        看程序写结果:先判断有没有问题,如果没有,写出结果
    */
    class Fu {
        public void show() {
            System.out.println("fu show");
        }
    }

    class Zi extends Fu {
        public void show() {
            System.out.println("zi show");
        }

        public void method() {
            System.out.println("zi method");
        }
    }

    class DuoTaiTest3 {
        public static void main(String[] args) {
            Fu f = new Zi();
            //找不到符号
            //f.method();//运行这个会报错
            f.show();
        }
    }

    题目(2)

    /*
        看程序写结果:先判断有没有问题,如果没有,写出结果
        
        多态的成员访问特点:
            方法:编译看左边,运行看右边。
            
        继承的时候:
            子类中有和父类中一样的方法,叫重写。
            子类中没有父亲中出现过的方法,方法就被继承过来了。
    */
    class A {
        public void show() {
            show2();
        }
        public void show2() {
            System.out.println("我");
        }
    }
    class B extends A {
        /*
        public void show() {
            show2();
        }
        *///这里的意思是B继承了A的show方法,因为类B并没有自己所属的show方法

        public void show2() {
            System.out.println("爱");
        }
    }
    class C extends B {
        public void show() {
            super.show();
        }
        public void show2() {
            System.out.println("你");
        }
    }
    public class DuoTaiTest4 {
        public static void main(String[] args) {
            A a = new B();
            a.show();
            
            B b = new C();
            b.show();
        }
    }

    最终答案是:爱你

    为了熟悉多态,写出了以下案例理解

    部分案例:

    猫狗案例:

    /*
        多态练习:猫狗案例
    */
    class Animal {
        public void eat(){
            System.out.println("吃饭");
        }
    }

    class Dog extends Animal {
        public void eat() {
            System.out.println("狗吃肉");
        }
        
        public void lookDoor() {
            System.out.println("狗看门");
        }
    }

    class Cat extends Animal {
        public void eat() {
            System.out.println("猫吃鱼");
        }
        
        public void playGame() {
            System.out.println("猫捉迷藏");
        }
    }

    class DuoTaiTest {
        public static void main(String[] args) {
            //定义为狗
            Animal a = new Dog();
            a.eat();
            System.out.println("--------------");
            //还原成狗
            Dog d = (Dog)a;
            d.eat();
            d.lookDoor();
            System.out.println("--------------");
            //变成猫
            a = new Cat();
            a.eat();
            System.out.println("--------------");
            //还原成猫
            Cat c = (Cat)a;
            c.eat();
            c.playGame();
            System.out.println("--------------");
            
            //演示错误的内容
            //Dog dd = new Animal();
            //Dog ddd = new Cat();
            //ClassCastException
            //Dog dd = (Dog)a;
        }

    南北方人案例:  

    /*
        不同地方饮食文化不同的案例
    */
    class Person {
        public void eat() {
            System.out.println("吃饭");
        }
    }

    class SouthPerson extends Person {
        public void eat() {
            System.out.println("炒菜,吃米饭");
        }
        
        public void jingShang() {
            System.out.println("经商");
        }
    }

    class NorthPerson extends Person {
        public void eat() {
            System.out.println("炖菜,吃馒头");
        }
        
        public void yanJiu() {
            System.out.println("研究");
        }
    }

    class DuoTaiTest2 {
        public static void main(String[] args) {
            //测试
            //南方人
            Person p = new SouthPerson();
            p.eat();
            System.out.println("-------------");
            SouthPerson sp = (SouthPerson)p;
            sp.eat();
            sp.jingShang();
            System.out.println("-------------");
            
            //北方人
            p = new NorthPerson();
            p.eat();
            System.out.println("-------------");
            NorthPerson np = (NorthPerson)p;
            np.eat();
            np.yanJiu();
        }
    }

  • 相关阅读:
    中文句子相似度之計算與應用
    《The Elder Scrolls V: Skyrim》百般冷门却强力职业
    《老滚5 》买房、娶老婆详尽攻略
    关于组播239.255.255.250
    Windows事件ID大全
    事件查看器常见ID代码解释
    Windows路由表详解
    两种动态加载JavaScript文件的方法
    80后的你们还记得这些游戏吗
    谷歌和HTTPS
  • 原文地址:https://www.cnblogs.com/canceler/p/4601482.html
Copyright © 2011-2022 走看看