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");
        }
  • 相关阅读:
    php生成二维码遇到的问题
    ua判断页面在什么终端/系统打开
    js实现复制文字到剪切板
    jquery 实现表单数据转化为对象格式
    [转]关于setTimeout()你所不知道的地方
    关于性能优化
    关于event loop
    JS数据结构与算法--双向链表
    JS数据结构与算法--单向链表
    JS数组去重
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286826.html
Copyright © 2011-2022 走看看