首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

java中继承的有关问题

2012-03-24 
java中继承的问题public class TestExtend extends Base {public static void main(String[] args) {Base

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...
}

热点排行