3 回答
TA贡献1796条经验 获得超7个赞
这个是讲java的继承,汽车是大类,奔驰也是属于汽车,所以也有汽车的所有的特性,只是质量啊什么的一些不同(奇瑞也是汽车,但是和奔驰不同把,但他们又都是汽车),Benz这个类继承Car这个累,并重写run方法
Car car = (Car)( new Benz() );
这个是子类可以像上转型,我们可以说奔驰是汽车,但是不可以说汽车是奔驰,创建了一个Benz的对象后调用run方法
TA贡献1891条经验 获得超3个赞
这样的程序是有问题的,修改如下:
public class Car {
public void run(){
System.out.println("汽车在跑");
}
public static void main(String[] args) {
Car car = (Car)( new Benz() );
car. run();
}
}
class Benz extends Car {
public void run(){
System.out.println("奔驰在跑");
}
}
或者这样
class Car {
public void run(){
System.out.println("汽车在跑");
}
}
public class Benz extends Car {
public void run(){
System.out.println("奔驰在跑");
}
public static void main(String[] args) {
Car car = (Car)( new Benz() );
car. run();
}
}
如果是这样,程序结果为:
奔驰在跑
TA贡献1155条经验 获得超0个赞
结果是奔驰在跑,这个是JAVA多态中的一种方法——声明父类创建子类,有的书上称之为子类对象的上转型对象,也就是将一个子类创建的对象赋值给父类声明的对象,此时如果这个上转型对象调用了被子类重写的方法,那么等同于子类对象调用这个方法,也就是执行的是子类重写后的新方法。上题中子类Benz重写了父类的方法run,所以将子类创建的对象new Benz()赋值给父类声明的对象car之后调用run方法得到的结果是奔驰在跑
添加回答
举报