java - 尝试学习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
}
}
解决方案
您需要首先创建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 因为家门打开和关闭?
推荐阅读
- javascript - 从后端发送 pdf 的问题
- react-native - 我可以在单反应原生项目中同时使用 redux 和 Flux 吗?
- python - AWS Lambda中的Python:多处理,一个完成时终止其他进程
- awk - pattern1 和第一个 pattern2 之间的双引号匹配并替换文件中的换行符(输出整个文件)
- python - __repr__() 和仅调用类实例之间的区别
- python - Snakemake:横向 DAG 深度优先?
- nginx - nginx 服务器块配置后出现文件未找到错误
- rust - Rust:从模块函数返回结果:类型参数的数量错误:预期 2,找到 0
- angular - 无法通过 webUSB 打开 USB 设备
- node.js - 在 node.js 中运行黄瓜多个标签