简单的JAVA代码!出什么问题了(多态)?

来源:百度知道 编辑:UC知道 时间:2024/09/22 12:47:46
public class Parent {}
class Child extends Parent
{
public void inChild ( String str ){
System.out.println( str + "测试成功!" );
}
public static void main(String[] args)
{
Parent parent = new Child();
parent.inChild("多态");
Child child = (Child)parent;

child.inChild("强转");
}
}
这段程序报错误:parent.inChild("多态");找不到符号!

public class Driver
{
public void install(){
System.out.println("装驱动啊……");
}
public static void main( String [] args ){
Driver driver1 = new LenovoDriver();
driver1.install();
System.out.println(driver1.i);
}
}
public class LenovoDriver extends Driver
{
int i = 10 ;
public void install(){
System.out.println("装联想驱动");
}
}
这段代码又正确!同样的调用方法呀。。。

你上面那段代码Parent parent = new Child(); 这个是声明一个父类对象,但是你调用了子类的空的构造方法,具体顺序是这样的,先调用父类构造方法,再调用子类的,因为你父类子类都没写构造方法,所以默认都是空的。说白了就是什么也没做。但是你声明的parent对象是父类的,父类没有inChild()方法,我觉得parent.inChild("多态");这里就会报错。。。你根本就点不出这个方法来。。。。

简单来说,Child向上转型到Parent时,Parent中没有的方法会丢失。