public class A{
public String as;
}public class B extends A{
super.as = "test";
public void method(){
C c = new C();
c.cm((A)this); //????? 这儿怎么获取 基类 A
}
}
public Class C{
public cm(A a){
.......
}
}
最后运行结果 在cm 方法中得到的类型是 B
public String as;
}public class B extends A{
super.as = "test";
public void method(){
C c = new C();
c.cm((A)this); //????? 这儿怎么获取 基类 A
}
}
public Class C{
public cm(A a){
.......
}
}
最后运行结果 在cm 方法中得到的类型是 B
B继承A,具有A的一切行为除非按楼上写的那样,但传过去的是一个新的实例
B继承A,具有A的一切行为
c.cm 方法的参数必须是A类, 因为 c.cm要根据 A的名称读一些相关的配置
class A{
public String as;
public A a = this;
} class B extends A{
super.as = "test";
public void method(){
C c = new C();
c.cm(super.a);
}
}不知对不对
而所谓的(A)this 只是在编译的时候有用,运行时,这个转换没有任何作用
c.cm(super.getClass().newInstance());
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
}
你如果一定要在B中获取一个纯种的A 那就在NEW一个A了
汗,只听说过父类强转成子类
Object o=new Object;
String s=(String)o;
没听说过子类强转成父类
汗,只听说过父类强转成子类
Object o=new Object;
String s=(String)o;
没听说过子类强转成父类 没写对吧,
子类的指向肯定包含信息比父类的多,所有你把String s指向object时,string时面多出来的旨向该往哪指呢,你这样应该也是错的吧,
最多只能这样子
Object o = (Object)new String();
给分,给分,
假如你用new A()代替了(A)this,那么在内存中只有A,而没有B的数据,那么,CM里面肯定就显示A对象。
public cm(A a)
System.out.println(a.getClass().getName());这题出的知识点是转型以后 a 对象所表示的实体是什么实际编程中可以吧所有的东西都转换成Object存入容器中
用的时候再从容器中取出来判断 obj instanceof 对象所表示的实体
如果等于true 再转换为对象所表示的实体 拿来使用