首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Instanceof和Casting,多态性

Instanceof和Casting,多态性
EN

Stack Overflow用户
提问于 2012-11-11 20:39:10
回答 1查看 494关注 0票数 1

基于我的一个老问题,Link,我正在努力学习更多关于造型和实例的知识。这是基于HeadFirst书中描述的场景

所以基本上我现在有了一个新的类( hybrid ),它继承了我的Vehicle类,我试图做的是强制转换一个混合对象来显示作为一个混合的额外信息。它是符合的,但我并不知道是什么导致了这个错误,只是在我标记的那一行结束了。

代码语言:javascript
复制
public class ShowroomDriver {
    public static void main(String[] args) {
    Showroom cars = new Showroom("Cars");
    Hybrid hybrid1 = new Hybrid("Toyota Prius", "Focus", "John Smith", "TOTAP453453987346283",
            getCalendar(2,3,1998), getCalendar(24,2,2012),
            "Right Hand",//Hybrid Only Info Edit: Forgot to commentout 
            true,
            'C',
            650, 82.0); //Cost & (Hybrid MPG)

    cars.addVechicle(hybrid1);
    cars.getVechicles();

混合类

代码语言:javascript
复制
import java.util.Calendar;

public class Hybrid extends Vehicle{
    private double consumption;
    private String drive;

    public Hybrid(String Manufacture, String Model, String CustomerName, String Vin, 
            Calendar DateManufactured, Calendar Datesold, String Drive,
            boolean HasbeenSold,
            char TaxBand,
            double Cost, double Consumption){

        super(Manufacture, Model, CustomerName, Vin, DateManufactured, Datesold,
                HasbeenSold,
                TaxBand,
                Cost);
        this.consumption = Consumption;
        this.drive = Drive;
    }

    public Double getConsumption() { return this.consumption; }
    public String getDrive() { return this.drive; }
}

新车辆方法

代码语言:javascript
复制
public void displayDetails(){
    for(int i = 0; i <cars.theVehicles.size(); i++){
        if(this.cars.theVehicles.get(i) instanceof Hybrid){//Error here
            Hybrid thehybrids = (Hybrid)this.cars.theVehicles.get(i);
            System.out.println("Consumption: " + thehybrids.getConsumption()+ "\n" +
                    "Drive: " + thehybrids.getDrive());
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-11 20:43:07

你需要选角吗?您已经覆盖了displayDetails()方法来显示特定于混合的信息。因此,您应该能够调用它,运行时将确定要调用的正确方法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13331191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档