关于java继承和多态的问题
2009-03-19 22:42
429 查看
我对java的学习有一年了吧,由于学习的间断性,对java面向对象的细节方面还很欠缺,对继承、多态、接口还有待更加深刻的了解,今天通过一个小小的例题,让我对多态有了比较深刻的了解:
此程序输出结果是
Descend.amethod()
1
Descend.amethod()
Descend继承Base,程序一开始就利用了多态new 了一个Descend子类,然后又将此子类赋值给父类b,在生成子类时要调用父类的构造函数,又因为子类重写了父类的方法amethod()方法,所以在执行父类构造方法中的amethod()时,这个方法就属于子类的方法,至于输出1的问题,是程序在编译阶段就指定了‘i’就是父类中的‘i’,即在执行Base b=new Descend()时就指定了父类中的i。
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。
相关文章推荐
- Java自学总结之二关于重载、继承与多态
- 0909 Java中连续继承中的多态问题
- 关于ActionScript 3.0 中方法重写和继承的发现(运行时多态,原理同Java)
- 关于java 中的继承问题
- 我的第一次博客文章,关于看完慕课Java视频三特性:封装、多态、继承
- java继承,多态方面的一个问题,定义一个父类对象,用子类new
- java的若干问题(1)——继承、多态、抽象类与接口
- java中静态属性和和静态方法的继承问题 以及多态的实质
- Java中关于构造函数继承的相关问题
- 一个关于封装、继承、多态的问题
- Java中关于多重继承的问题
- 关于Java多态和继承的一道题
- java中静态属性和和静态方法的继承问题 以及多态的实质
- java中静态属性和和静态方法的继承问题 以及多态的实质
- JAVA基础知识点(六)--接口,多态,继承,抽象类,重载的问题
- java继承时候关于父类中的静态方法的问题
- 剖析java中的多态(继承)问题
- Java中关于继承、类、多态、接口的知识点
- 关于java多态的问题
- 关于Java封装、继承、多态的生动例子——咖喱块