读书人

java中继承的有关问题

发布时间: 2012-03-24 14:00:46 作者: rapoo

java中继承的问题
public class TestExtend extends Base {
public static void main(String[] args) {
Base b = new TestExtend();
b.amethod();
}

@Override
public void amethod() {
System.out.println("Driv..");
}
}

class Base {
Base() {
amethod();
}
public void amethod() {
System.out.println("Base ");
}
}


[解决办法]
Driv..
Driv..
据我理解,因为TestExtend继承了父类Base,覆写了amethod()方法
,所以子类的构造函数super()方法也覆写了父类构造函数里的amethod()方法
对象b是TestExtend类对象,在new的时候调用构造函数输出第一个Driv..
第二Driv..是TestExtend类实例的amethod方法
[解决办法]

探讨

Driv..
Driv..
据我理解,因为TestExtend继承了父类Base,覆写了amethod()方法
,所以子类的构造函数super()方法也覆写了父类构造函数里的amethod()方法
对象b是TestExtend类对象,在new的时候调用构造函数输出第一个Driv..
第二Driv..是TestExtend类实例的amethod方法

[解决办法]
new TestExtend();构造子类对象时,需要先构造父类对象,父类构造方法中调用了被子类重写过的amethod();方法,所以在创建父类对象时会直接调用子类覆写过的amethod();方法。
b.amethod();直接调用子类覆写过的amethod();方法。多态的特性而已
[解决办法]
方法的多态。
[解决办法]
public static void main(String[] args) {
Base b = new TestExtend();
//调用Base的构造方法,构造方法里面调用method()方法,但method()方法被子类重写,打印driv..
b.amethod();
//再次调用重写后的method(),打印driv...
}

读书人网 >J2EE开发

热点推荐