zoukankan      html  css  js  c++  java
  • Java子类继承父类详解

    别和我说你真的懂了继承,先来看下面的代码,回答出我的问题再说
    代码很简单,如下:
    父类:

    public class T {
    public void run()
        {
            System.out.println("T can run");
        }
    public static void main(String args[])
        {
            T t = new SubT();
            t.run();
            t.fly();
            SubT subT = (SubT)t;
            subT.run();
            subT.fly();
        }
    }
    

    子类:

    public class SubT extends T{
    public void run()
        {
            System.out.println("SubT can run too");
        }
    
    public void fly()
        {
            System.out.println("SubT can fly");
        }
    }
    

    首先,上述代码可以正常编译乃至运行吗?
    其次,能够执行其结果是?不能编译或执行的原因在哪个地方?
    上面这个例子是很典型的子类继承父类并重写run方法,添加了新的fly方法,而调用的时候去声明一个父类引用去指向一个子类对象
    首先,上述代码是无法编译通过的,因为一个父类的引用无法去调用子类独有的方法或者被子类复写后的方法,故t.fly()这个调用时违法的
    好的,那么我们把这句注释掉,输出结果是什么呢?

    SubT can run too
    SubT can run too
    SubT can fly  
    

    从上述结果可以看出,当一个父类引用指向了一个子类的对象时,调用的方法为子类复写后的方法,而非父类方法,正式这一特性大大地拓展了java的多态性
    附一个讲的比较详细的链接:父类引用指向子类对象

  • 相关阅读:
    我的通用dao理解
    Java JNI 编程进阶
    jpa
    WINCE6.0+S3C2443下的usb function(功能)驱动
    WINCE5.0下SQL server compact版本更新
    WINCE6.0+S3C2443下SD卡驱动
    错误的抉择,痛悔
    WINCE电源管理
    冒泡法和选择法排序
    WinCE CEDDK之Bus操作函数
  • 原文地址:https://www.cnblogs.com/sxiong/p/4132166.html
Copyright © 2011-2022 走看看