美文网首页
第十八课:多态性

第十八课:多态性

作者: 冰J冰 | 来源:发表于2016-01-12 09:58 被阅读0次

特点

  • 对象的多态性: 分家导致的财产纠纷
  • 方法 的多态性:双重事件

// 素食
interface Vegetarian{

}

class Bird{

}

class Animal{

    public void run(){

        System.out.println("Animal----Run is nature");
    }

    public void eat(){

        System.out.println("Animal----eat is nature");
    }
        public void eat(String str){

        System.out.println("Animal----eat is nature");
    }
    // public String toString(){

    //  return "fds";
    // }
}

public class Deer extends Animal implements Vegetarian{

    String name;
    public void run(){

        System.out.println("Deer----Run is nature");
    }

    public void sleep(){

        System.out.println("Deer----sleep is nature");
    }

    public String toString(){

        return  name + " is a deer";
    }
    public static void main(String[] args) {

        /*
        向上转(类)型
        多态性是指对象能够有多种形态。(主要体现在 1.方法的重载和重写 2. 对象的多态性)
        在 OOP 中最常用的多态性发生在当父类引用指向孩子类对象时。
        */
        Deer d = new Deer();
        //父类引用指向孩子类对象
        Animal a = d;
        a.run();// Deer----Run is nature
        Vegetarian v = d;
        Object o = d;

        /*
            现在 Deer 类是多态的,因为他有多个继承机制。针对上面的例子有以下说法:

            Deer 就是 Animal
            Deer 就是 Vegetarian
            Deer 就是 Deer
            Deer 就是 Object
        */
        // 所有的引用变量 d, a, v, o 引用同一个对象 Deer。
        System.out.println(d instanceof Deer);
        System.out.println(a instanceof Deer);
        System.out.println(v instanceof Deer);
        System.out.println(o instanceof Deer);

        /*
        对象的多态性
        向上转(类)型:程序会自动完成
        父类 父类对象 = 子类实例  (该父类对象只能调用父子交集的部分)
        */
        Animal animal = new Deer();
        animal.run(); // 方法重写
        animal.eat();
        // animal.sleep();// 不能被调用
        System.out.println("-----------------------");

        

        // 向下转型: 强制类型转换(一定先发生向上转型 才能发生向下转型)
        // 子类 子类对象 = (子类)父类实例
        // Animal ani = new Animal();  //ClassCastException 类型转换异常
        Animal ani = new Deer();  
        Deer deer = (Deer)ani;
        deer.run();
        deer.eat();// 父类自己方法
        deer.sleep(); // 子类自己的方法
        deer.name = "dr";
        System.out.println(deer);

    }
}

相关文章

  • 第十八课:多态性

    特点 对象的多态性: 分家导致的财产纠纷 方法 的多态性:双重事件

  • 家长微课:弟子规第十七十八课(善伟老师)

    家长微课:弟子规第十七和十八课

  • 世界上最神奇的24堂课第十八课

    今天我们来聊聊,世界上最神奇的24堂课第十八课 第十八课 互惠行为 所有人都处于各种各样的社会关系之中,都不是独立...

  • 一周总结

    这一周,我们在语文上先学了,第十四课,第十五课,第十六课,第十七课,第十八课。我们在数学上新学了,方程和解...

  • 轻松富足30天-13天

    安老师《轻松富足30天》2020.4.18第十三天分享 早上好 我亲爱的同学们 阅读今日功课 第十八天 第十八课 ...

  • 2017噗啦秋季美学课程18(4-6)

    第十八课 鸽子 噗啦美学指导师:麦麦 课前材料准备: 油画棒、画纸、水彩、毛笔 教...

  • 语法点教学案例

    文/Yanjun 说明 1、教材:中文听说读写 Level 1 Part 2,第十八课《运动》。 2、教学对象:学...

  • 详解Java多态

    详解Java多态 多态定义 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态...

  • 跟着《30天学会绘画》学绘画18

    跟着《30天学会绘画》学绘画18 第十八课 纸卷 反复运用绘画的九大基本法则。

  • 第十八课

    他挂了我的电话 he hang up my phone (在he 的后面不可以让 动词这么出现 低级错误) han...

网友评论

      本文标题:第十八课:多态性

      本文链接:https://www.haomeiwen.com/subject/yvxckttx.html