zoukankan      html  css  js  c++  java
  • java多态之方法调用

    分为四种情况:
    1.第一种情况:父类中有,而子类中没有的方法
    2.第二种情况:父类中没有,而子类中有的方法
    3.第三种情况:父类中有,子类中也有的方法
    4.第四种情况:父类和子类都有,但都是静态方法
    代码举例分析:
    父类:SuperClass
    子类:SubClass
    方法:父类中:doWork1()doWork()static doWork3()
              子类中:doWork2()doWork()static doWork3()

        public static void main(String[] args) {
            SuperClass a=new subClass();
    
            //第一种情况:父类中有,而子类中没有的方法
            a.doWork1();//输出:SuperClass.doWork1,调用了父类中存在的方法
    
            //第二种情况:父类中没有,而子类中有的方法
            //a.doWork2();//编译错误,因为编译的时创建的是编译类型,也就是SuperClass类型,
                        //而该类中没有doWork2()方法,会报错
    
            //第三种情况:父类中有,子类中也有的方法
            a.doWork();//输出:subClass.doWork,体现了多态的特性,调用了子类特定的方法(对象的运行类型)
    
            //第四种情况:父类和子类都有,但都是静态方法
            a.doWork3();//输出:SuperClass.doWork
            /*
             * 分析:静态方法和对象没有关系,访问时用的类名调用(SuperClass.doWork()),也就是用的时编译类型,即父类中的方法.
             *       这种情况称为隐藏,而不是覆盖。只有与对象有关的才称为覆盖。
             */
        }
    }
    class SuperClass{
        public void doWork1(){//只在父类
            System.out.println("SuperClass.doWork1");
        }
        public void doWork(){//子类父类都有
            System.out.println("SuperClass.doWork");
        }
        public static void doWork3(){//子父类都有的static方法
            System.out.println("SuperClass.doWork");
        }
    }
    class subClass extends SuperClass{
        public void doWork2(){//只在子类
            System.out.println("subClass.doWork2");
        }
        public void doWork(){//子类父类都有
            System.out.println("subClass.doWork");
        }
        public static void doWork3(){//子父类都有的static方法
            System.out.println("subClass.doWork");
        }
  • 相关阅读:
    Maven入门详解
    (二)从分布式一致性谈到CAP理论、BASE理论
    (一)从集中式到分布式
    四种MySQL存储引擎
    日期函数、时间函数总结(MySQL 5.X)
    SQL函数说明大全
    Java虚拟机1:什么是Java
    Java设计模式1:设计模式概论
    Linux概述
    Android 使用SharedPreference来进行软件配置的存取
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286826.html
Copyright © 2011-2022 走看看