• 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
    */
  • 相关阅读:
    Leetcode刷题记录:构建最大数二叉树
    Leetcode刷题记录:编码并解码短网址
    Python获取数字的二进制值
    SQL文件的BOM问题导致的invalid character错误及解决
    修改服务的运行权限,解决SVN Post Commit问题
    将iPod中的音乐拷贝到Mac中
    Linux下创建可执行bin安装文件
    Mac下使用XLD转换无损音乐Ape
    Mac环境下配置Tomcat+Eclipse
    Curl操作Elasticsearch的常用方法
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10201123.html
Copyright © 2020-2023  润新知