已知如下代码:
public class ClassA{}
public class ClassB extends ClassA{}
public class ClassC{
ClassA obj;
public void setClassA(ClassA obj){
}
}以下叙述错误的是( )
可以在setClassA()方法中传递一个ClassB类型的对象
如果在类ClassA中定义了方法method1(),在类ClassB中覆盖了该方法,当setClassA()方法参数传递的是ClassB类型的对象时,在ClassC中调用obj的method1()方法时将执行ClassB的method1()的方法。
可以在ClassC中定义一个新的方法setClassA(ClassB obj),他与原有方法setClassA(ClassA obj)构成一组重载方法
如果在ClassB中定义了ClassA没有的新方法method2(),当setClassA()方法参数传递的是ClassB类型的对象时,在ClassC中可以调用obj对象的method2()方法。
【如果在ClassB中定义了ClassA没有的新方法method2(),当setClassA()方法参数传递的是ClassB类型的对象时,在ClassC中可以调用obj对象的method2()方法。】
-> 错误;obj的实际类型是ClassB,但ClassA没有method2方法,除非强制类型转换为ClassB,否则obj不能调用method2方法
-> 错误;obj的实际类型是ClassB,但ClassA没有method2方法,除非强制类型转换为ClassB,否则obj不能调用method2方法