我有以下Java超类,每个属性都有构造函数、getter和setter:
public class vehicle {
int vehicleId;
public vehicle(int vehicleId) {
super();
this.vehicleId = vehicleId;
}
public int getVehicleId() {
return vehicleId;
}
public void setVehicleId(int vehicleId) {
this.vehicleId = vehicleId;
}
和一个car子类,它扩展了vehicle超类,并具有几个独特的属性:
public class car extends vehicle{
private String wheels;
//constructor
public car( int vehicleId, String wheels) {
super(vehicleId);
this.wheels = wheels;
}
//getters and setters
public int getWheels() {
return wheels;
}
public void setWheels(int wheels) {
this.wheels = wheels;
}
我创建一个新的vehicle对象链表,并向其中添加一个新的car对象:
LinkedList<vehicle> gbm = new LinkedList<vehicle>();
car car = new car(0, "");
car.setVehicleId(1);
car.setWheels("alloy");
gbm.add(car);
我可以用下面这样的函数更改属于vehicle超级类的任何属性:
public static void editVehicleId(int vid, int vehicleId) {
for (vehicle obj : gbm) {
if (obj.vehicleId == vid) {
obj.setVehicleId(vehicleId);
} else {
System.out.println("No matching vehicle Id found - please check input");
}
}
}
但是当我试图创建一个类似的函数来更改其中一个子类属性时,我得到了这个错误:“方法setWheels(int)对于类型Vehicle是未定义的”。
public static void editWheels(int vid, int wheels) {
for (vehicle obj : gbm) {
if (obj.vehicleId == vid) {
obj.setWheels(wheels);
} else {
System.out.println("No matching vehicle Id found - please check input");
}
}
}
有人能告诉我如何编辑子类的特定属性吗?
您的for循环变量是车辆类型。由于这是car类的方法,因此将其设置为car对象:
for (vehicle obj : gbm) {
if (obj.vehicleId == vid) {
if (obj instanceof car) {
((car)obj).setWheels(wheels);
}
}
... rest of loop ...
}
问题内容: 我只是阅读了watch()方法的Mozilla文档。它看起来非常有用。 但是,我找不到与Safari类似的东西。既不是Internet Explorer。 您如何管理跨浏览器的可移植性? 问题答案: 我不久前为此创建了一个小object.watch垫片。它适用于IE8,Safari,Chrome,Firefox,Opera等。
我有一个MyClass,它的属性类型为MyAttribute。该类由MySubClass继承,其属性类型为MySubAttribute。MySubAttribute是MyAttribute的子类: 现在假设我有以下代码: 如何生成MySubAttribute类型的返回值?
问题内容: 在此python文档页面上,它说: 像其身份一样,对象的类型也是不可更改的。 我尝试这个脚本, 结果显示: 我想我更改了的。 怎么了,我想念什么? 问题答案: 该页面的脚注说: [1]在某些情况下,在某些受控条件下可以更改对象的类型。但是,通常这不是一个好主意,因为如果处理不当,它可能会导致某些非常奇怪的行为。 如果您尝试将f2的更改为: 引发TypeError:
我有一个包含很多字段的列表,需要使用stream在一次传递中创建一个列表。 > 我们需要将列表中的字段current标记为true,以获得输入列表中最小的正整数 输入: 输出: 我有点困惑,如何推导逻辑,将单个循环中最小正整数的当前标志(**)更新为true。
Java有没有办法实现这样的目标: 而不是反复输入相同的变量名?谢谢
我有以下基类和子类: 在我的代码中,我正在检查一个类的实例,检查一个我知道存在于基类中的字段-我希望它默认为值。但是,我的代码引发了以下异常: AttributeError:“TypeTwoEvent”对象没有属性“foobar” 我的印象是基类字段将被子类继承,创建子类的实例将实例化基类(从而调用其构造函数)... 我在这里错过了什么?为什么没有属性-当派生它的基类具有属性时?