多态性

作者: 冯宏志 | 来源:发表于2020-11-30 22:53 被阅读0次
    • 理解多态性:可以理解为一个事物的多种形态
    1. 何为多态性
      对象的多态性:父类的引用指向子类的对象(以下代码Person是Man和Women的父类)
      Person p1 = new Man();
      Person p2 = new Women();

    2. 多态的使用,虚拟方法调用
      有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法
      总结:编译,看左边;运行,看右边

    3. 多态性的使用前提
      ①:类的继承关系
      ②:方法的重写

    多态性使用举例:
    package com.atguigu.java3;
    
    public class Animal {
        public void eat() {
            System.out.println("动物:吃");
        }
        public void shout() {
            System.out.println("动物:叫");
        }
    }
    
    class Dog extends Animal{
        public void eat() {
            System.out.println("狗吃狗粮");
        }
        public void shout() {
            System.out.println("汪汪汪");
        }
    }
    
    class Cat extends Animal{
        public void eat() {
            System.out.println("猫吃猫粮");
        }
        public void shout() {
            System.out.println("喵喵喵");
        }
    }
    
    class AnimalTest{
        public static void main(String[] args) {
            AnimalTest test = new AnimalTest();
        /*******举例1*************/
            test.func(new Dog());
            System.out.println("********");
            test.func(new Cat());
            
        }
        
        public void func(Animal animal) {
            animal.eat();
            animal.shout(); 
        }
    }
    /*******举例2*************/
    class Order{
        public void method(Object obj) {
            
        }
    }
    
    /*******举例3*************/
    class Driver{
        public void doData(Connection conn) {//conn = new MySQLConnection(); 或者  conn = new OracleConnection();
                                            //跟不同类型的数据库建立连接
            //规范的步骤去操作数据
            conn.method1(); 
            conn.method2();
            conn.method3();
        }
    }
    
    1. 对象的多态性,只适用于方法,不适用于属性
    方法的重载和重写

    对于重载而言,在方法调用之前,编译器就已经确定了所要调用的方法,这称为“早绑定”或“静态绑定”
    对于多态,只有等到方法调用的那一刻,解释运行器才会确定所要调用的具体方法,这称为“晚绑定”或“动态绑定”

    相关文章

      网友评论

          本文标题:多态性

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