zoukankan      html  css  js  c++  java
  • new 和override 重写区别

    new 是新创建,override是重载已经有的

    看下面例子大家就知道了

    A类 有方法 public virtual void test()
    B类继承自A类,有方法 public new void test()
    如下实例化:
    A a = new B();
    a.test();

    如果你用override,则无论调用的是A类还是B类中的TEST(),系统都会找到它实质类的TEST();
    如果是用的New,则可以通过类型转换调用到基类的TEST();

    下面是override的情况:
    A a = new A();
    B b = new B();
    A a1=new B();
    a.Test();//调用A中Test();
    b.Test();//调用B中Test();
    a1.Test();//调用B中Test();系统会自动识别a1是B的实例
    ((A)b).Test();//与上面相同

    下面是new的情况:
    A a = new A();
    B b = new B();
    A a1=new B();
    a.Test();//调用A中Test();
    b.Test();//调用B中Test();
    a1.Test();//调用A中Test();
    ((A)b).Test();//与上面相同

    如果是new呢 对象是父类的就调用父类的方法

    是子类的对象就调用子类的方法

    如果把子类强制转换成父类

    那么对象也调用父类的方法

  • 相关阅读:
    java练习生
    java练习生
    java练习生
    java练习生
    java练习生
    sqlserver 将表转为java实体类型
    linux下部署.net core/java
    Java根据经纬度计算两点之间的距离
    Docker学习——Kubernetes(八)
    Docker学习——Docker 三剑客(七)
  • 原文地址:https://www.cnblogs.com/bestsaler/p/1835790.html
Copyright © 2011-2022 走看看