首页 > 解决方案 > 继承类中的 Java 覆盖

问题描述

我面临的问题是,每当有人想要 .switchOff() 一个 SmartDevice 时,如果它是一个 SmartFridge 对象,它应该覆盖 SmartDevice 类中的 switchOff() 方法。

问题是 java 给了我以下错误: The operator != is undefined for the argument type(s) double, null

我不知道如何解决这个问题。

@Override
public void switchOff() {
    if(this.getCurrentTemperature()!= null) {
            this.setSwitchedOn(true);
            //if the object is  SmartFridge leave switchedOn value to true

        }
    }

继承的类:

package SmartHomeApp;

public class SmartFridge extends SmartDevice{

    private double currentTemperature;


    public SmartFridge(String name, double location, boolean switchedOn, double currentTemperature)
    {

        super(name, location, switchedOn);
        setLocation(location);
        setName(name);
        setSwitchedOn(true);
        setCurrentTemperature(currentTemperature);
    }

    public double getCurrentTemperature(){ return currentTemperature;}
    public void setCurrentTemperature(double value){ currentTemperature = value;}

智能设备类:


public class SmartDevice {
    private String name;
    private double location;
    private boolean switchedOn;

    public SmartDevice(String name, double location, boolean switchedOn) {
        setName(name);
        setLocation(location);
        setSwitchedOn(switchedOn);
    }

    //YOU CANT ACCESS the 'private classes' so you need to GET them
    public void setName(String value) {name = value;}
    public void setLocation(double value) {location = value;}
    public void setSwitchedOn(boolean value) {switchedOn = value;}

    public String getName() {return name;}
    public double getLocation() {return location;}
    public boolean getSwitchedOn() {return switchedOn;}

    public void switchOn() {this.switchedOn=true;}
    public void switchOff() {this.switchedOn=false;}

标签: javaoopinheritance

解决方案


您针对“null”检查的类型不是对象。这种类型是原始类型,Java 为它们设置了默认值。

您应该查看这篇文章以获取更多信息:https ://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html


推荐阅读