美文网首页
java-多态中方法重载和方法重写

java-多态中方法重载和方法重写

作者: JR_咖啡少年 | 来源:发表于2016-07-04 21:45 被阅读134次

    1.当子类重载父类的方法,父类不能引用该方法。只能引用自己的方法。
    2.当子类重写父类的方法,父类引用指向子类对象时,调用的是子类里被重写的方法。

    指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用)。

    package com.duotai.homework3;
    /*
     * 子类
     */
    
    public class RedWine extends Wine{
        /*
         * 子类重载父类的方法。父类中不存在此方法
         */
        public void fun1(String str){
            System.out.println("RedWine 的fun1....");
            fun2();
        }   
        /*
         * 子类重写父类的方法
         * 指向子类的父类引用调用fun2()方法时,必定是调用该方法
         */
        public void fun2(){
            System.out.println("RedWine的fun2....");
        }   
    }
    
    package com.duotai.homework3;
    /*
     * 父类
     */
    public class Wine {
          public void fun1(){
                     System.out.println("wine的fun1.....");
                     fun2();
          }
          
          public void fun2(){
                 System.out.println("wine的fun2.....");
    }
    }
    
    package com.duotai.homework3;
    
    public class WineTest {
        public void print(Wine w){
                 w.fun1();
                 System.out.println("------------");
                 w.fun2();
        }
        public static void main(String[] args) {
            Wine w = new RedWine();
            
            
            WineTest wt = new WineTest();
            wt.print(w);
            
            System.out.println("************");
            Wine w1 = new Wine();
            w1.fun1();
    
        }
    
    }
    
    运行结果:
    wine的fun1.....
    RedWine的fun2....
    ------------
    RedWine的fun2....
    ************
    wine的fun1.....
    wine的fun2.....
    

    参考博客:http://blog.csdn.net/chenssy/article/details/12786385

    相关文章

      网友评论

          本文标题:java-多态中方法重载和方法重写

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