A a=new B();
这样写有什么用吗?
为什么把a强制转化为class A 型的呢,而不是用B a=new B()这样声明和定义?通常在什么情况下这样使用呢,我刚接触请教一下大家。谢谢
...全文
10413打赏收藏
请教关于类的强制转换
关于类的使用请教: public class A { } public class B extends A { } A a=new B(); 这样写有什么用吗? 为什么把a强制转化为class A 型的呢,而不是用B a=new B()这样声明和定义?通常在什么情况下这样使用呢,我刚接触请教一下大家。谢谢
这就是著名的多态思想,比如这样:
class A{
void aaa(){
}
}
class B extends A{
void aaa(){
}
}
class C extends A{
void aaa(){
}
}
相当于B,C分别继承了A,并重写了aaa的方法。
A a=new B();
这样调用a.aaa()会自动调用B的aaa方法。
A a=new ……
[/Quote]
这就是著名的多态思想,比如这样:
class A{
void aaa(){
}
}
class B extends A{
void aaa(){
}
}
class C extends A{
void aaa(){
}
}
相当于B,C分别继承了A,并重写了aaa的方法。
A a=new B();
这样调用a.aaa()会自动调用B的aaa方法。
A a=new C();
会自动调用C的aaa方法。
这就是著名的多态思想,比如这样:
class A{
void aaa(){
}
}
class B extends A{
void aaa(){
}
}
class C extends A{
void aaa(){
}
}
相当于B,C分别继承了A,并重写了aaa的方法。
A a=new B();
这样调用a.aaa()会自动调用B的aaa方法。
A a=new C();
会自动调用C的aaa方法。
这就是著名的多态思想,比如这样:
class A{
void aaa(){
}
}
class B extends A{
void aaa(){
}
}
class C extends A{
void aaa(){
}
}
相当于B,C分别继承了A,并重写了aaa的方法。
A a=new B();
这样调用a.aaa()会自动调用B的aaa方法。
A a=new C();
会自动调用C的aaa方法。