华为的一道面试题
代码如下:
package com.ex;public class TestB extends TestA {String string = "TestB var";public static void main(String[] args) {TestB testB = new TestB();// testB.init();System.out.println(testB.string);}public TestB() {super();System.out.println("TestB()");}void init() {System.out.println("init()");string = "test B init";}}abstract class TestA {String string = "TestA var";public TestA() {init();}abstract void init();}大家先看下能不能做对?
答案我就不写在这了,自己运行下就知道了. 1 楼 June1991 2011-11-01 怎么运行不了? 2 楼 茉莉清茶 2011-12-21 可以运行啊,这个问题容易在输出最后一条字符串的时候出错,这道题考察的是Java中的实例变量的用法,在init()中给string赋值的时候,其实是给this这个对象赋值的,而在main()函数中的testB是一个新的对象,两个不是同一个对象!