为了账号安全,请及时绑定邮箱和手机立即绑定

如下代码,请问题目的运行结果是什么?可以详细的讲一讲吗?

如下代码,请问题目的运行结果是什么?可以详细的讲一讲吗?

噜噜哒 2022-05-04 11:07:11
public 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();}
查看完整描述

3 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

这个是讲java的继承,汽车是大类,奔驰也是属于汽车,所以也有汽车的所有的特性,只是质量啊什么的一些不同(奇瑞也是汽车,但是和奔驰不同把,但他们又都是汽车),Benz这个类继承Car这个累,并重写run方法
Car car = (Car)( new Benz() );
这个是子类可以像上转型,我们可以说奔驰是汽车,但是不可以说汽车是奔驰,创建了一个Benz的对象后调用run方法

查看完整回答
反对 回复 2022-05-09
?
万千封印

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();
}
}

如果是这样,程序结果为:
奔驰在跑



查看完整回答
反对 回复 2022-05-09
?
白衣非少年

TA贡献1155条经验 获得超0个赞

结果是奔驰在跑,这个是JAVA多态中的一种方法——声明父类创建子类,有的书上称之为子类对象的上转型对象,也就是将一个子类创建的对象赋值给父类声明的对象,此时如果这个上转型对象调用了被子类重写的方法,那么等同于子类对象调用这个方法,也就是执行的是子类重写后的新方法。上题中子类Benz重写了父类的方法run,所以将子类创建的对象new Benz()赋值给父类声明的对象car之后调用run方法得到的结果是奔驰在跑


查看完整回答
反对 回复 2022-05-09
  • 3 回答
  • 0 关注
  • 213 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信