zoukankan      html  css  js  c++  java
  • java 多态缺陷

    一,会覆盖私有方法

    
    

    package object;

    
    

    class Derive extends Polymorphism{
    public void f1()
    {
    System.out.println("I am Derive");
    }


    }
    public class Polymorphism{
    private void f1()
    {
    System.out.println("I am Polymorphism");
    }
    public static void main(String[] args)
    {
    Polymorphism d = new Derive();
    d.f1();
    }

    
    

    }/* output:
    I am Polymorphism
    *///:~

     

    二.域与静态方法,一旦你访问某个域,这个访问就将在编译期进行解析,这种情况通常不会发生,因为通常将域设为private,只能通过方法访问域

    package object;
    
    class Base{
        public int i = 0;
        public int get(){return i;}
    }
    class Base2 extends Base{
        public int i =2;
        public int get(){return i;}
        public int get1(){return super.i;}
    }
    
    public class Polymorphism{
        public static void main(String[] args)
        {
            Base b1 = new Base2(); //当Base2转型为Base时任何域访问操作都将由编译器解析,因此不是多态的
    //
    ,在本例中,Base2.get()和Base1.get分配了不同的存储空间
    System.out.println(b1.get()+" " + b1.i); Base2 b2 = new Base2(); System.out.println(b2.get()+" " + b2.i + " "+ b2.get1()); } }/* output: 2 0 2 2 0 */

     当某个方法时静态的,它的行为就不具有多态性

    package object;
    
    class Base{
        public static int i = 0;
        public static  String get(){return " " + i;}
    }
    class Base2 extends Base{
        public static int i =2;
        public  static String get(){return " " + i;}
        public int get1(){return super.i;}
    }
    
    public class Polymorphism{
        public static void main(String[] args)
        {
            Base b1 = new Base2();
            Base.get();
             System.out.println(b1.get());
            Base2 b2 = new Base2();
            System.out.println(b2.get());
        }
    }/* output:
     0
     2
    */
  • 相关阅读:
    05用户故事与敏捷方法笔记之五
    04用户故事与敏捷方法笔记之四
    03用户故事与敏捷方法笔记之三
    框架学习.关于内省api操作bean属性
    02用户故事与敏捷方法笔记之二
    01用户故事与敏捷方法笔记之一
    问题账户需求分析
    2017年秋季个人阅读计划
    第二冲刺项目进展
    典型用户与场景
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10201123.html
Copyright © 2011-2022 走看看