美文网首页JavaWeb
面对对象-多态

面对对象-多态

作者: 我叫吴智斌 | 来源:发表于2018-11-02 18:02 被阅读2次


多态思想和特点
        //狗是动物类
        //一个对象有多种形态
        //一个表示自己的类,一个表示自己父类的类型
        //子类对象赋值给父类类型
        
        
        //多态运行时还是自己new出来的对象本身类
        Animal dog =new Dog();
        dog.eat();
        
        //子类对象赋值给父类类型
        //运行时,表现的是子类的特征(先去找子类)
        System.out.println(dog.getClass());//class _06面向对象.多态.Dog

eclipse快捷键
ctrl + + 放大屏幕
ctrl + - 缩小屏幕

多态的好处

instanceof关键字(懵逼)

        class Animal {
            void eat() {
                System.out.println("动物吃东西");
            }
        }

        class Dog extends Animal {
            void eat() {
                System.out.println("狗吃骨头");
            }
            void dowork() {
                System.out.println("汪汪汪");
            }
        }

        class Person{

            void feedAnimal(Animal anim) {//传入类型为Animal anim  
                System.out.println(anim.getClass());//得到真实类型
                anim.eat();
        
                if(anim instanceof Dog) {//判断传入的  anim  是否为Dog
                    Dog dog = (Dog)anim;  //因为 Dog 类是Animal的子类,传进来的时候,Dog dog不能接收父类的参数值,只能用强制类型转换来接收
                    dog.dowork();
                }else if(anim instanceof Cat) {
                    Cat as = (Cat)anim;
                    as.watch();
                }
    
            }
        }

        Animal dog = new Dog();

        类的强制类型转换:把父类对象赋值给子类类型
        instanceof:判断一个对象是否是指定的类,如果是  返回 true   不是的话返回false
        Dog dog = (Dog)anim;
        dog.dowork();

多态中字段注意点
字段不存在多态
字段前面对象是什么类型,就调用谁的.在编译的时候,就已经确定了要去调用谁的

        class SuperClass {
            String name = "sup-myxq";

            void myxq() {
                System.out.println("super的myxq");
            }
        }
        class SubClass extends SuperClass {
            String name = "sub-myxq";
            void myxq() {
                System.out.println("sub的myxq");
            }
        }
        SuperClass sub = new SubClass();
        System.out.println(sub.name);//调用的时候并不是表现出多态的特征,表现出的是super的特征
        //打印出来的是sup-myxq   

相关文章

  • 面对对象-多态

    eclipse快捷键ctrl + + 放大屏幕ctrl + - 缩小屏幕 多态的好处 inst...

  • C++编译期多态和运行期多态

    C++多态有多种实现方式,在面对对象编程时,采用的是运行期多态,也称动态多态。在泛型编程中,多态基于模板的具现化与...

  • OC中类与对象的基础应用

    对象,是面对对象程序的核心面对对象三大特征:继承,封装,多态OC中的类:类可以是任意的事物,是具有相同特征的事物 ...

  • GeekBand Objective-C 继承、多态

    面对对象的三个基本特征:封装 encapsulation继承 inheritance多态 polymorphism...

  • 面对对象

    面对对象语言的特性: 1. 封装。 2. 继承。 3. 多态(父类引用指向子类实例)。 我对面对对象的理解: 1....

  • JAVA基础

    java的特点 面对对象编程(OOP):封装,继承,多态。https://www.cnblogs.com/chen...

  • 多态的C++实现

    多态的C++实现 1 多态的原理 什么是多态?多态是面向对象的特性之一,只用父类指针指向子类的对象。 1.1 多态...

  • iOS中多态,继承,分类,扩展

    多态 多态:不同对象以自己的方式响应相同的消息的能力叫做多态。程序中的多态:父类指针指向子类对象多态的原理 动态绑...

  • C++ 多态及虚函数

    多态 什么是多态?通俗来说就是相同对象收到不同消息或不同对象收到相同消息时产生不同的动作。 静态多态 静态多态也叫...

  • 【Python】Class

    面对对象编程的三大特性:封装,继承,多态。 封装:create class class封装了Attribute和m...

网友评论

    本文标题:面对对象-多态

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