• 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");
        }
  • 相关阅读:
    感动于细节,记我的一个同学(君君)
    求职时,我问过的问题
    毕业留言,写给我的一个同学
    偶是一个如此善良的人
    温柔地对待仇人,就像对待情人一样!
    小改机箱,支持硬盘调头,让磁盘对拷更方便
    心中的女朋友:(标准)
    准备开始看以下书籍
    成都文化公园游后感
    ”中国的教育与计算机“读后感
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286826.html
Copyright © 2020-2023  润新知