比方说:
class A {
public int fieldA = 0;
}
class B extends A {
public int fieldB = 0;
}现在,我想从A创建一个B的实例:
A a = new A();
B b = (B) new A();这给出了一个classCastException。我可以在B中创建一个构造函数,它接受一个A实例并复制字段,但这显然是不实际的:
class B extends A {
public int fieldB = 0;
B (A a){
fieldA = a.fieldA;
}
}谢谢你的帮助
发布于 2013-05-30 17:42:37
类类型转换的用法是不同的。
class Employee()
{
//body
}
class SalariedEmployee extends Employee()
{
//body
}你有一些多态的代码。
public static void met(Employee e)
{
SalariedEmployee s = (SalariedEmployee)e
}
public static void somemethod()
{
//You write a polymorphic method
//You will create a list of Employees
//Then you can write
ArrayList<Employee> employees = new ArrayList<Employee>()
//Create a SalariedEmployee
Employee e = (Employee) new SalariedEmployee()
employees.add(e);
e = (Employee) new CommissionEmployee()
employees.add(e);
}你不能做SalariedEmployee b = (SalariedEmployee) new Employee();,因为不能保证每个Employee都是SalariedEmployee。
https://stackoverflow.com/questions/16832612
复制相似问题