一个Java面试题
2013-01-24 23:10
295 查看
class Human {
public static int n = 10;
public Human() {
// 和C++中不同的是,虽然子类还未构造完成,但仍然可以调用子类的age函数,
// 显然,Java不是通过虚表实现的多态,看起来多态就是天生的,永远都是调用实际对象的成员函数
age();
}
public void age() {
System.out.println("The age = " + n);
}
}
public class HumanAction extends Human {
private int n = 20;
public void age() {
System.out.println("The age = " + n); // 此时n还未构造,所以默认值为0
}
public static void main(String[] args) {
new HumanAction();
}
}
// The age = 0
由此可见,父类的初始化要先于成员变量的初始化,这点和C++是一样的。注意,成员变量的初始化是先于构造函数的。
public static int n = 10;
public Human() {
// 和C++中不同的是,虽然子类还未构造完成,但仍然可以调用子类的age函数,
// 显然,Java不是通过虚表实现的多态,看起来多态就是天生的,永远都是调用实际对象的成员函数
age();
}
public void age() {
System.out.println("The age = " + n);
}
}
public class HumanAction extends Human {
private int n = 20;
public void age() {
System.out.println("The age = " + n); // 此时n还未构造,所以默认值为0
}
public static void main(String[] args) {
new HumanAction();
}
}
// The age = 0
由此可见,父类的初始化要先于成员变量的初始化,这点和C++是一样的。注意,成员变量的初始化是先于构造函数的。
相关文章推荐
- java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 面试题之java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况
- java面试题 用1,2,2,3,4,5六个数字,组成一个6位数。 第三位数不能是2;3和5不能相邻。
- 【Java面试题】2 Java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?超详细解析
- java面试题,写一个线程安全的List
- 【Java面试题】17 如何把一个逗号分隔的字符串转换为数组? 关于String类中split方法的使用,超级详细!!!
- [Android面试题-7] 写出一个Java的Singleton类(即单例类)
- 一个java多线程面试题
- 一个据说第一次接触都会做错的Java面试题和类加载器的介绍
- java面试题--获取重叠字符串的个数组成一个新字符串
- java面试题,一个字符串中的大写变小写,小写变大写,数字不变,其他就变成*
- 一个很无耻的Java面试题
- Java基础查漏补缺:(String篇)一个面试题问倒了我,原来String并不简单
- 【面试题】JAVA 一个线程依赖另外一个线程的结果
- Java面试题多思路解析--有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
- 公司的一个java面试题
- java面试题解惑:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- Java之深入JVM(2) - 由深入JVM(1)想到的一个面试题
- Java面试题:1-100之间的数,被放在数组a[99]中,有一个数没有包含在其中,用java代码找出这个数
- 【Java面试题】26 多线程有几种实现方法?同步有几种实现方法? 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?