class A {
int item;
int a_item; public void h(){
System.out.println("aaa.h()");
}
public void f() {
System.out.println("aaa.f()");
}
}class B extends A {
int item;
int b_item; public void f() {
System.out.println("bbb.f()");
}
public void k(){
System.out.println("bbb.k()");
}
}public class Test2 { public static void main(String[] args) {
A a = new B();
A b = new A(); }
}程序如上,a和b所能调用的属性和方法都是一样的,
是不是a和b就是一样?
它们有不一样的地方吗?
int item;
int a_item; public void h(){
System.out.println("aaa.h()");
}
public void f() {
System.out.println("aaa.f()");
}
}class B extends A {
int item;
int b_item; public void f() {
System.out.println("bbb.f()");
}
public void k(){
System.out.println("bbb.k()");
}
}public class Test2 { public static void main(String[] args) {
A a = new B();
A b = new A(); }
}程序如上,a和b所能调用的属性和方法都是一样的,
是不是a和b就是一样?
它们有不一样的地方吗?
解决方案 »
- 内部类的运用问题!!!
- java初学者!想知道怎么学java?从哪里入手?请有经验的兄弟给点意见!
- Image inImage = new ImageIcon("/img/comm/bg1.jpg").getImage();出错,急。。。。
- 请问,我想在JPanel中竖排一系列JCheckBox。为何做?
- 关于一个JAVA测试问题
- 调查问卷
- toString()为什么不起作用
- 关于java程序执行的问题
- 简单的闰年问题
- 小弟想转行了,有家公司让我去做DVD,MP3及數碼音響產品研发,大家说有没有前途!!!
- 关于<<Java中利用JMF编写摄像头拍照>>的问题
- 新人,awt问题,路过的顶下,知道的留下,谢谢
如果b是implement a那么就不一样
你可以试以下
a.f()
b.f()这两个输出
这一句的过程是这样的,
1)创建一个类A的引用a
2)创建一个类B的实例
3)把类B的引用赋值给a因为A是B的父类,所以,赋值成功。A b = new A()
这一句的过程是这样的,仅仅在第二步与第一句不同
1)创建一个类A的引用b
2)创建一个类A的实例
3)把类A的引用赋值给b
2.使用的差异首先,a和b都可以执行h()、f(),其中二者执行f()是的结果不一样。
其次,对于a,你可以执行
((B)a).k();
对于b,则抛出异常。
继承里面有override,你的程序根本说没不了问题,光定义两个实例有什么用,也不看看调用方法后的结果有什么不同
譬如:
a.f();
b.f();
会有不同的输出:
bbb.f()
aaa.f()
这就是多态性的体现。A b = new A(); 是实例化一个对象的通常方式。