java - 类的构造函数有问题
问题描述
该程序要求用户输入两次姓名和就业 ID,而只需输入一次。
我正在尝试使用继承到名为 Nursing 的类的名称和就业 ID 实例变量打印一个句子。该程序运行良好。但是,问题在于它要求用户输入两次姓名和就业标识。
AbstractTest.java -
import java.util.*;
class AbstractTest {
String name;
int employmentId;
AbstractTest (){
//initialize name and employmentId instance variables
System.out.println("enter name");
Scanner readString = new Scanner(System.in);
this.name = readString.nextLine();
System.out.println("enter ID");
Scanner readInt = new Scanner(System.in);
this.employmentId = readInt.nextInt();
}
// constructor ends
}
护理.java -
class Nursing extends AbstractTest{
void display() {
System.out.println("the employment detail: " + "Name: " +
name + "ID: " + employmentId);
}
}
Main.java -
class Main {
public static void main(String[] args) {
AbstractTest abstractTest = new AbstractTest();
Nursing nursing = new Nursing();
nursing.display();
}
}
//它运行良好,但不知何故重复两次输入名称和ID。它应该只需要一次(下面是 MS DOS 的结果)。
输入名字 蝙蝠侠
输入 ID 1234
输入名字 超人
输入 ID 5678
就业详情: 姓名:SupermanID:5678
解决方案
删除线
AbstractTest abstractTest = new AbstractTest();
尽管您不使用该对象,但它正在被创建并且Scanner
正在请求 2 个输入。
Nursing nursing = new Nursing();
就足够了:它将调用其父级的构造函数,即AbstractTest
.
推荐阅读
- python - 在烧瓶中创建超级用户的最佳方法是什么
- azure-function-app - 更新到 Microsoft.Net.Functions 3.0.3 后如何正确设置 Azure 队列触发器?
- vue.js - 在 Vue 中编辑数组的最佳方法。v模型问题
- javascript - React,如何更改下拉菜单选项?查询?
- selenium-webdriver - 实现池队列硒网格
- azure-iot-edge - TPM 证明 - 序列图?
- c++ - 尝试使用 std::atomic 控制对数组的多线程访问
- centos - yum 没有足够的缓存数据来继续。在这一点上,yum 唯一能做的安全的事情就是失败
- arrays - 返回嵌套数组中的数组元素
- c++ - 删除二维数组 C++ 的前三个元素