如何创建对象

时间:2016-06-14 09:24:38

标签: java

我创建了这个练习,因为我的思绪被卡住了#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++; 
        }

3 个答案:

答案 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();
    }

}

希望这能帮助你:)