首页 > 解决方案 > 尝试学习Java中的继承

问题描述

我正在尝试自学如何使用 Java 编程,而现在我正在尝试自学如何使用继承。

我想创建一个名为 Pushbutton 的类,它继承自类 Door。在我的 Pushbutton 类中,我有一个名为 status 的方法,它接受一个名为 button 的布尔值,并且根据按钮的值,将在类 Door 中调用方法 open 或 close。

我遇到的问题是,在我的主要方法中,我试图调用方法状态,如第 25 行所示,但我收到一条错误消息说

Main 类型的方法 status(boolean) 未定义。

我可以看到如何在不使用继承的情况下解决这个问题,但这违背了我想要完成的目的。有谁知道我如何在仍然使用继承的同时解决这个问题?

我也尝试过将 Pushbutton 和 Door 类公开,但随后我收到新的错误消息,指出这些类必须在它们自己的文件中。此外,原始错误消息不会消失。

class Door{
    public void open() {
        System.out.println("Door is opened");
    }
    public void close() {
        System.out.println("Door is closed");
    }
}

class Pushbutton extends Door{
    public void status(boolean button) {
        if (button==true) {
            super.open();
        }
        else {
            super.close();
        }
    }

}

public class Main {
    public static void main(String[] args) {
        boolean button=true;
        status(button); //line 25
    }
}

标签: java

解决方案


您需要首先创建Pushbutton类型的对象才能使用Pushbutton类中存在的非静态方法

这里:-

class Door{
    public void open() {
        System.out.println("Door is opened");
    }
    public void close() {
        System.out.println("Door is closed");
    }
}

class Pushbutton extends Door{
    public void status(boolean button) {
        if (button==true) {
            super.open();
        }
        else {
            super.close();
        }
    }

}

public class Main {
    public static void main(String[] args) {
        boolean open=true;

        // create object of type Pushbutton
        Pushbutton button = new Pushbutton();

        // call the method status from the object
        // and pass it the boolean parameter
        button.status(open); //line 25
    }
}

我也认为你不应该称它为“按钮”,按钮不是门(逻辑上),也许称它为 HomeDoor 因为家门打开和关闭?


推荐阅读