我在这里看到一个代码,用于创建对象。
public static void main(String args[]){
Car[] cars = new Car[30];
for (int i = 0; i < 10; i++) {
cars[i] = new Honda();
cars[i+10] = new Nissan();
cars[i+20] = new Subaru();
}
}
abstract class Car{
abstract int getDoorCount();
abstract int getWindowCount();
abstract int getPrice();
}
class Honda extends Car{
@Override
int getDoorCount() {
return 2;
}
@Override
int getWindowCount() {
return 0;
}
@Override
int getPrice() {
return 1000;
}
}
class Nissan extends Car{
@Override
int getDoorCount() {
return 4;
}
@Override
int getWindowCount() {
return 0;
}
@Override
int getPrice() {
return 2000;
}
}
class Subaru extends Car{
@Override
int getDoorCount() {
return 1;
}
@Override
int getWindowCount() {
return 1;
}
@Override
int getPrice() {
return 3000;
}
}
据我所知创建一个对象我应该创建一个空的和完整的构造函数,对吧?如果是,那么代码的一部分(不是全部写)应该是这样的:
class Honda extends Car{
public Honda(int getWindowCount,int getDoorCount,int getPrice){
super(getWindowCount,getDoorCount,getPrice);
}
@Override
int getDoorCount() {
return 2;
}
@Override
int getWindowCount() {
return 0;
}
@Override
int getPrice() {
return 1000;
}
}
我尝试做某事但我失败了:
public class Nissan extends Car{
private int lights;
publicNissan(){}
public Nissan(int getDoorCount,int getWindowCount,int getPrice,int lights){
super(getDoorCount,getWindowCount,getPrice);
}
public int getlights(){ return lights; } public void setlights(int
ls){ lights=ls; }
@Override
int getDoorCount() {
return 4;
}
@Override
int getWindowCount() {
return 0;
}
@Override
int getPrice() {
return 2000;
} }
在我的主要部分,我把它称为Nissan.getlights(3);这意味着我给了车3灯,但它不起作用,为什么?
答案 0 :(得分:0)
当你这样做时:
public Nissan(int getDoorCount,int getWindowCount,int getPrice,int lights){
super(getDoorCount,getWindowCount,getPrice);
}
public int getlights(){
return lights;
}
public void setlights(int ls){
lights=ls;
}
您将3个参数传递给超类 getDoorCount , getWindowCount 和 getPrice 但是你没有用最后一个参数初始化成员灯, 这意味着汽车已经初始化,但是日产没有正确/正确地构建......
在那个错误之后,调用灯光的吸气器将不会返回你期望的......public Nissan(int getDoorCount,int getWindowCount,int getPrice,int lights){
super(getDoorCount,getWindowCount,getPrice);
this.lights = lights;
}
答案 1 :(得分:0)
您的getlights()
方法没有任何参数因此问题。要获得所需的值,请先致电setlights(3)
,然后使用getlights()
重新读取该值。