美文网首页Java后台开发学习之路
JavaSE基础之多态中成员的访问

JavaSE基础之多态中成员的访问

作者: CL_Ray | 来源:发表于2018-03-20 20:42 被阅读0次

当一个父类引用持有子类对象时,对于成员(变量及方法)的访问是有不同的,具体如下:

public class MainClass {
    public static void main(String[] args) {
        Father f = new Child();
        System.out.println(f.num);
        f.hello();
    }
}

public class Father {
    int num = 10;

    public void hello(){
        System.out.println("Hello, I'm father class");
    }
}

public class Child extends Father {
    int num = 20;

    public void hello() {
        System.out.println("Hello, I'm child class");
    }
}

一、成员变量

f.num的输出结果是10

因为在child对象中,会有专门的一块空间来存储父类的数据,父类引用访问成员变量只能访问到这片空间。

Child对象
当我们使用Child child = new Child();来创建对象时,child.num就访问的是this中的num

总结:父类引用访问变量,编译看左边(父类),运行看左边(父类)。

二、 成员方法

f.hello();方法调用输出结果是Hello, I'm child class

虽然在编译时,f仍然只能看见super的空间,但是在程序运行时,f调用的确是子类的hello()方法,这也叫做动态绑定。

总结:父类引用访问方法,编译看左边(父类),运行看右边(父类)。

以上是以前的知识点加深记忆,所以并没有写的很全面。

相关文章

  • JavaSE基础之多态中成员的访问

    当一个父类引用持有子类对象时,对于成员(变量及方法)的访问是有不同的,具体如下: 一、成员变量 f.num的输出结...

  • 技术问 - 多态的实现机制是什么

    多态前提和体现: 有多态时的子父类间的成员变量、成员方法、构造方法之间的特点: 多态中 成员变量的访问特点:编译...

  • JavaSE语法(部分)

    JavaSE语法(部分) 继承 继承中变量的访问特点 在子类方法中访问一个变量/成员方法 子类局部范围找 子类成员...

  • 多态成员访问特点

    Fu fu = new Zi(); 成员变量: 编译看左边,运行看右边 成员方法:编译看左边 ,运行看右边 构造方...

  • 面试题

    1.多态的了解 多态存在有三个前提 继承,重写,父类引用指向子类对象。 多态成员访问的特点: a.成员变量 编译看...

  • 多态,向上下转型

    实现的多态前提 多态情况下要注意的细节 子父类中存在同名的成员变量时(包括静态变量),访问的是父类的成员变量。 子...

  • 多态

    1.多态的成员变量 父子类中出现同名变量:访问都看等于号左边 2.多态的方法 多态成员方法编译时期:参考引用变量所...

  • JavaSE 基础学习之五 —— IO 操作 (java. io

    接上篇《JavaSE 基础学习之四 —— 异常的处理》 五. JavaSE 基础学习 —— IO 操作 (java...

  • 黑马程序员面试宝典(Java)Beta6.0免费下载

    场景 JavaSE基础 面向对象特征以及理解 访问权限修饰符区别 理解clone对象 JavaSE语法 java有...

  • JavaSE基础知识学习-----多态

    多态 Java面向对象编程有三大特性:封装,继承和多态封装隐藏类的内部具体实现机制,保护数据,对外界隐藏内部细节,...

网友评论

    本文标题:JavaSE基础之多态中成员的访问

    本文链接:https://www.haomeiwen.com/subject/wzfiqftx.html