我创建了这个练习,因为我的思绪被卡住了#39;''对象。
练习:我有一个超类,我有3个子类。让我们说我有一辆车(超级)。我有1个子类(Honda),1个子类(Nissan),1个子类(Subaru)。此外,本田级有2门,日产有4门,斯巴鲁1门和1个窗口。
问题:如何制作汽车?如何制造本田,日产,斯巴鲁等车型? 我在想什么,我在练习中做了什么:
首先:我创建''''''在本田,日产,斯巴鲁的子类中的例子我的意思是private int windows;
第二:我创建了getter和setter方法。例如:
public int getwindows(){return windows; }
和set
public void setwindows(int ws){windows=ws;}
第三:我创建了空的完整构造函数.example:empty
public Honda() {} // of course i will create the same things in the other subclass and and the superclass Car
和完整的构造函数
public Honda(int numberofpositioncar,int doors,int windows){super(numberofpositioncar); super.setUsing("Normal");} // i put more features to seemed more like an constructor
四:这是我的问题,我应该创建一个数组吗?或者每个类别有3个数组?无论如何,我用对象创建了3个数组。一辆用于本田,一辆用于日产,一辆用于斯巴鲁。我应该把它放在主,超类还是子类上?我把它放在超类上。这段代码是错误的,这是我到目前为止尝试的内容:
int N=10; // i create an array 10 slots -starting from 0 until 9 .
Car = new Car[N];
for(int i =0; i < car.length; i++) {
Car normalCar = new Honda();// i should give a price here ? and i will use the constructor of the subclass Hox ?
Honda.setwindows(5); // that will create 5 windows?
Honda.getwindows(2); // or that will create 2 windows?
Car[nCount] = sportCar;
nCount++;
}
答案 0 :(得分:0)
好吧,如果我理解你是对的,你就会问你的列表/数组在哪里用汽车,对吗?
要明确的是,一个班级应该只做与其直接相关的事情。
e.g。一辆汽车可能有一个方法drive()
,但它负责照顾它存储的位置。
其他情况下,如果您有多辆车,您可能希望使用addCar(Car car)
在你的情况下,只是为了将它们保存在一个数组中,你想把这个列表放到你的主(或控制器或者什么)中,但肯定不会进入基类。
希望这会有所帮助
答案 1 :(得分:0)
老实说,我认为你不需要继承,超类和子类。你想要描绘的信息似乎是每辆车都有一个模型,一些门,以及许多窗户等等。这些都可以是田野。
public class Car
{
String model;
int doors;
int windows;
// Price, position, etc...
public Car(String model, int doors, int windows)
{
this.model = model;
this.doors = doors;
this.windows = windows;
}
}
至于 where 来实例化这个类 - 应该放在main
方法中,这个方法会在你运行时执行。
public static void main(String[] args)
{
List<Car> cars = new ArrayList<Car>(); // This is much more convenient than a fixed-size array
cars.add(new Car("Honda", 2, 5));
cars.add(new Car("Subaru", 1, 1));
etc...
}
话虽如此,当我们可以回答这些问题时,我真的建议你找一个java教程,并从头到尾完成它。它将为您提供基本概念的体验,因此当您想要执行此类项目时,您将更好地了解从哪里开始。
答案 2 :(得分:0)
如果我知道的话,我想你想要创建这样的类:
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;
}
}
当您想要创建一系列汽车时。你可以写主要或其他方法,比如这个
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();
}
}
希望这能帮助你:)