zoukankan      html  css  js  c++  java
  • 《java入门第一季》之面向对象(一个易错面试题)

    这个面试题有点难度,有一些饶。不明白可以在下面讨论。还是值得搞懂的。
    
    /
    *
    	看程序写结果:
    		A:成员变量的问题
    			int x = 10; //成员变量x是基本类型
    			Student s = new Student(); //成员变量s是引用类型
    		B:一个类的初始化过程
    			成员变量的初始化
    				默认初始化。
    				显示初始化。
    				构造方法初始化
    		C:子父类的初始化(分层初始化)
    			先进行父类初始化,然后进行子类初始化。
    			
    	结果:
    		YXYZ
    		
    	问题:
    		虽然子类中构造方法默认有一个super()
    		(初始化)的时候,(不是)按照那个顺序进行的。
    		(而是)按照(分层)初始化进行的。
    		(它仅仅表示)要先初始化父类数据,再初始化子类数据。
    */
    class X {
    	Y b = new Y();//这是成员变量初始化
    	X() {
    		System.out.print("X");
    	}
    }
    
    class Y {
    	Y() {
    		System.out.print("Y");
    	}
    }
    
    public class Z extends X {
    	Y y = new Y();//Y
    	Z() {
    		//super()隐含一个super(),不代表执行,仅仅表示要(先初始化)父类数据,隐含调用了父类中的无参构造方法,最后再初始化子类数据
    		
    		System.out.print("Z");//Z
    	}
    	public static void main(String[] args) {
    		new Z(); //先去初始化父类x,再去访问子类z
    	}
    }
    易错答案:YYXZ.因为没考虑到super其实仅仅时代表了初始化父类数据
  • 相关阅读:
    PDE_DATA 定义
    每天写日记争创青年艺术家 2014-5-14
    [Servlet3.0新功能]注释替代配置文件
    Flex4+Spring3+Hibernate3+BlazeDS整合笔记
    Flex博客
    hibernate缓存机制详细分析
    计算机的艺术-算法
    算法/数据结构/数学
    线性表 及Java实现 顺序表、链表、栈、队列
    java 图的邻接矩阵
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299862.html
Copyright © 2011-2022 走看看