创建参数
public class A {
}
public class B extends A {
}
创建父类,父类的run方法返回的是B子类的参数
public class AA {
public B run() {
return new B();
}
}
创建子类,这时候会报错
public class BB extends AA {
@Override
public A run() {
return new B();
}
}
经过分析当
// 没毛病
BB bb = new BB();
A a = bb.run();
/**
* 但是多态的时候,aa.run()本应该返回B但是子类返回A
* 这时候就有了 B b = (B) aa.run(),A父类被强制转换成子类B,所以不允许
*/
AA aa = new BB();
B b = aa.run();