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的多态性
    附一个讲的比较详细的链接:父类引用指向子类对象

  • 相关阅读:
    Dotfuscator 保护您的应用程序
    IOS 类方法
    播放音乐与视频
    windows phone 手机信息的查看
    更改枢轴视图的Item字的大小
    IOS 总结
    Windows Phone 中HttpWebRequest用法
    关于Listbox的 SelectionChanged 事件 (同一个Item只触发一次问题)
    windows phone 标准色值
    IOS GPS 定位
  • 原文地址:https://www.cnblogs.com/sxiong/p/4132166.html
Copyright © 2011-2022 走看看