JAVA中父类是不能强行转换成子类的,这个我清楚?但是最近在做一个项目时,遇到这种情况,我需要把父类的对象强行转换成子类的?请问各位大侠有什么好的解决办法没?
假如下面的例子:
Class A{}
Class B extends A{
private String name;
void setName(String n){...};
String getName(){...};
}
public class C
{
public static void main(String[] args)
{
System.out.println("强制类型转换A->B后的调用效果:");
A a = new A();
B b = B(a); //编译通过,但是运行出错
b.setName("test");
System.out.println(b.getName());
} 我的目的就是达到上面理想状态中的效果.
}
假如下面的例子:
Class A{}
Class B extends A{
private String name;
void setName(String n){...};
String getName(){...};
}
public class C
{
public static void main(String[] args)
{
System.out.println("强制类型转换A->B后的调用效果:");
A a = new A();
B b = B(a); //编译通过,但是运行出错
b.setName("test");
System.out.println(b.getName());
} 我的目的就是达到上面理想状态中的效果.
}
这样就可以了
所以把 A a = new A();
换成A a = new B();
顶一个
你为什么不直接new B();然后加属性呢?
原来的A不是我设计和编写的,但是现在的需求需要加个属性,所以只好重写个B继承A了(不能动A).什么意思?那就用B好了 意思是给A加个属性,但是不能在动A的代码.