您的位置:首页 > 编程语言 > Java开发

关于java继承和多态的问题

2009-03-19 22:42 429 查看
我对java的学习有一年了吧,由于学习的间断性,对java面向对象的细节方面还很欠缺,对继承、多态、接口还有待更加深刻的了解,今天通过一个小小的例题,让我对多态有了比较深刻的了解:
public class Base {
int i=1;
public void amethod(){
System.out.println("Base.amethod()");
}
public Base(){
this.amethod();
}
}
public class Descend extends Base {
int i=-1;
public static void main(String[] arg){
Base b=new Descend();
System.out.println(b.i);
b.amethod();
}
public void amethod(){
System.out.println("Descend.amethod()");
}
}


此程序输出结果是

Descend.amethod()

1

Descend.amethod()

Descend继承Base,程序一开始就利用了多态new 了一个Descend子类,然后又将此子类赋值给父类b,在生成子类时要调用父类的构造函数,又因为子类重写了父类的方法amethod()方法,所以在执行父类构造方法中的amethod()时,这个方法就属于子类的方法,至于输出1的问题,是程序在编译阶段就指定了‘i’就是父类中的‘i’,即在执行Base b=new Descend()时就指定了父类中的i。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: