首页 > 编程语言 > 详细

Java——静态类型 实际类型

时间:2019-06-08 17:07:41      阅读:325      评论:0      收藏:0      [点我收藏+]
public class test {
    static class father {
        void run() {
            System.out.println("father run");
        }
    }
    static class son extends father{
        void run() {
            System.out.println("son run");
        }
    }

    public void sayHello(son son) {
        System.out.println("son");
    }

    public void sayHello(father father) {
        System.out.println("father");
    }

    public static void main(String[] args) {
        father a = new son();
        a.run();
        test t = new test();
        t.sayHello(a);
        System.out.println(a.getClass());
    }
}

输出结果:

son run
father
class old.test$son

解释:

father a = new son()

这里面 father 是静态类型,son是实际类型。

静态类型是在编译期可知的,而实际类型是在运行期才可以知道,

所以当运行run()时,取的是子类方法,而将a作为参数传入时,是以father这个类型传入的。

这也说明了重写载是静态的,而重写是动态的。

 

Java——静态类型 实际类型

原文:https://www.cnblogs.com/gaoquanquan/p/10991058.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!