java - 如何覆盖在另一个已继承的类中赋予值的变量
问题描述
我试图让用户输入汽车在超类中的座位数,但制作一个方法来打印名为“汽车”的子类中的座位数。但是,当我声明存储用户输入的变量时,我收到一条错误消息,指出该变量不可见,这是因为它在另一个类中。
import java.util.Scanner;
class Vehicle {
Scanner s = new Scanner(System.in);
private String color;
private int noOfCylinders;
private int noOfSeats;
public Vehicle() {
color = "Black";
noOfCylinders = 0;
noOfSeats = 1;
}
public Vehicle(String color, int noOfCylinders, int noOfSeats) {
this.color = color;
this.noOfCylinders = noOfCylinders;
this.noOfSeats = noOfSeats;
}
public void getColor() {
System.out.print("Enter color of vehicle: ");
color = s.nextLine();
}
public String setColor() {
return color;
}
public void getNoOfCylinders() {
System.out.print("Enter number of cylinders: ");
noOfCylinders = s.nextInt();
}
public int setNoOfCylinders() {
return noOfCylinders;
}
public void getNoOfSeats() {
System.out.print("Enter numer of seats: ");
int noOfSeats = s.nextInt();
}
public String toString() {
String information;
information = "is " + color + " and it has " + noOfCylinders + " cylinders.";
return information;
}
}
public class CreateVehicle {
public static void main(String[] args) {
Car CarObject = new Car();
Truck TruckObject = new Truck();
CarObject.getColor();
CarObject.setColor();
CarObject.getNoOfCylinders();
CarObject.setNoOfCylinders();
CarObject.toString();
CarObject.getNumOfSeats();
TruckObject.getColor();
TruckObject.setColor();
TruckObject.getNoOfCylinders();
TruckObject.setNoOfCylinders();
TruckObject.toString();
System.out.print(("\nThe car ")+CarObject.toString());
System.out.print(("\nThe truck ")+TruckObject.toString());
}
}
class Car extends Vehicle{
public void getNumOfSeats(){
System.out.print("\nThe car has " + noOfSeats + " seats.");
}
}
class Truck extends Vehicle {
public void printTowingCapacity() {
System.out.print("\nThe car has " + towingCapacity + ".");
}
}
解决方案
如果要保持变量私有,可以使用父类的公共函数 getNoOfSeats()。
class Car extends Vehicle{
public void getNumOfSeats(){
System.out.print("\nThe car has " + super.getNoOfSeats() + " seats.");
}
}
或者只是将变量 noOfSeats 更改为 protected 或 package-protected,
推荐阅读
- zipfoundation - ZIPFoundation 在后台线程中?
- database - 系统从数据库获取数据时找不到指定的文件
- hl7 - 如何使用 HAPI 2.4 创建 HL7 消息 ORU_R01 类型
- jquery - 使用 JSON 数据填充 INPUT 和 SELECT
- forms - Xamarin 表单控件值不可见
- c# - 如何依赖注入数据访问层,它在其构造函数中采用数据库设置?
- html - 我的 HTML 没有链接到我的 CSS
- nginx - 带有 http2 的 nginx 后面的 asp.net 核心 - 远程 ip 始终为 127.0.0.1
- r - 在R中绘制风上升?
- android - cancelAll() 和 cancel() 不会关闭我的通知