当前位置:  技术问答>java相关

請問誰能描述一下這道SCJP題的運行過程?

    来源: 互联网  发布时间:2015-05-01

    本文导语:  what output for following code: class Base {  int x=3;  public Base() {}  public void show() {  System.out.print(" The value is " + x);  } } class Derived extends Base {  int x=2;  public Derived() {}  public void show() {  System.out.print(...

what output for following code:

class Base {
 int x=3;

 public Base() {}

 public void show() {
 System.out.print(" The value is " + x);
 }

}

class Derived extends Base {
 int x=2;

 public Derived() {}

 public void show() {
 System.out.print(" The value is " + x);
 }

 }

 public class Test {

 public static void main(String args[]) {
 Base b = new Derived();
 b.show();
 System.out.println("The value is " +b.x);
 }

 }



The answer:The value is 2The value is 3


|
其实很简单的,你要记住的就是在 

类的继承中方法是被覆盖的,属性是被隐藏的

就可以了


1、首先看main中的Base b=new Derived(); 实例化了Derived类
class Derived extends Base {
  int x=2;
  public Derived() {}
  public void show() {
    System.out.print(" The value is " + x);
  }
}
在这个Derived类中首先执行其构造函数 public Derived(){},而在这个构造函数的第一行默认调用其超类的构造函数,于是执行public Base() {}。

2、回到main里面b.show();被执行,由于类Derived继承了Base类,而Derived类和Base类都有同一个方法show(),所以Derived类的show方法覆盖了Base类的show方法,所以调用的是这个语句
public void show() {
 System.out.print(" The value is " + x);
}
那么究竟打印出来的x是子类的值还是父类的值呢,由于在继承的时候成员变量即属性是被隐藏的所以当前只有子类的属性被调用即int x=2;
这样The value is 2就被打印出来了。

3、回到main中 System.out.println("The value is " +b.x);被执行
这个b是什么类型的呢,可以看main里面的第一条语句
Base b = new Derived();
很显然b是Base类型的,那么由于属性是被隐藏的,所以b.x中的x调用Base的属性int x=3;
这样The value is 3被打印出来的

所以最后的结果是:
The value is 2The value is 3

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C/C++ 数据类型描述及类型修饰符介绍
  • 文件描述符集fd_set * readfds;书上这样描述数组元素的每一位对应一个文件描述符,第一个元素代表文件描述符0到31,数组第二个元素代表文
  • 每个线程都进行申请文件描述符的操作的话,会不会发生文件描述符申请冲突?
  • CPU如何知道CS寄存器内装的是LDTR指向的描述符表的段选择符还是GDTR指向的描述符表的段选择符呢?
  • TCP连接中创建的监听描述字和已连接描述字(套接字)对应的是同一个套接口么,如果是的话,读写数据时系统怎么区分是哪个套接字的?
  • 关于文件描述符问题
  • UNIX的文件描述符传递问题
  • 文件描述的回收问题,谢谢
  • 矢量图形描述语言 Asymptote
  • 文件描述符的限制?(共享内存)
  • 哪里有ejb部署文件的 dtd描述
  • 文件描述符
  • 请问FILE结构体和文件描述符有什么联系?谢谢
  • XML描述的GUI框架 Gui4j
  • 流程描述图形编辑器 JPEd
  • 中断描述符表(IDT)问题
  • 监视文件和目录文件描述符的问题
  • 请高手指教:段描述符与段页机制的问题
  • 文件描述符的数据结构在哪定义?
  • Linux打开的文件描述符必须手动close吗
  • 文件描述符,文件句柄的区别?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3