关于类的使用请教:
public class A
{
}public class B extends A
{}A a=new B();
这样写有什么用吗?
为什么把a强制转化为class A 型的呢,而不是用B a=new B()这样声明和定义?通常在什么情况下这样使用呢,我刚接触请教一下大家。谢谢
public class A
{
}public class B extends A
{}A a=new B();
这样写有什么用吗?
为什么把a强制转化为class A 型的呢,而不是用B a=new B()这样声明和定义?通常在什么情况下这样使用呢,我刚接触请教一下大家。谢谢
解决方案 »
- java int 的最大值+1为什么是-2147483648
- 我觉得我弱爆了,看不懂这句代码,谁能帮我看下,谢谢
- JAVA中对象问题!------------------------------------------------------
- (紧急求助!!!)Java swing
- 急请高手解答 一个小应用问题。
- 体育彩票6+1选号程序大致成了。各位再提些意见。
- 使用JBUILDER做的程序如何脱离开发环境运行,有没有可执行文件?
- 在java中如何实现对话框?
- java编译运行问题
- 我的理解有没有错,overrriding是参数必须不同,其它的必须相同,而overloading是参数不同外,存取操作符和返回类型可以不同,
- tomcat问题
- for循环打印菱形
别把C那套理论套过来
A a=(A)new B();// 这才是强转LZ先忽略现在问题,等你多看点基础知识,就明白了
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方法。---------------------------------------------------------------------
我理解上面的多态思想,是想继续请教一下在这个思想的背后,子类和父类的存储空间是如何分布的?我想应该是在内部有相应的转换机制来管理这些:每当用户写成用B继承A的时候,内部的机制便会用B实例化A的对应部分。我是这么理解的。
也许这是java和c的区别吧?面向对象的语言会忽略这部分内容,而是将重点放在如何解决问题上,或许我不该将精力放在这个上面,本末倒置了也许
每个版本的JVM实现可能都不一样,所以这个没标准答案