java 继承 - 我需要一个数组吗?

标签 java inheritance

我需要一个名为building的通用基类,它存储建筑物的楼层数, 房间数量及其总面积。我还需要一个名为 house 的派生类,它继承 建筑并存储卧室和浴室的数量,以及另一个 名为 office 的派生类也继承了 building 并存储灭火器的数量和 电话。

我必须创建一个 Java 应用程序来演示此类层次结构并提供所有必需的 方法。必须使用以下主要方法来测试这些类。

public class TestBuildings 
{

 public static void main(String[] args) 
 {
    building building1 = new building(1, 10, 6000);
    building building2 = new building();
    System.out.println();

    house house1 = new house(1, 5, 3000);
    house house2 = new house(2, 2);
    System.out.println();

    office office1 = new office(1, 2, 15000);
    office office2 = new office(2, 6, 15000, 6, 30);
    System.out.println();

    //change building properties
    building2.setFloors(3);
    building2.setRooms(12);
    building2.setFeet(20000);
    System.out.println("Building 2: \n" + building2.toString() + "\n\n");

    //change house properties
    house1.setBedrooms(3);
    house1.setBaths(3);
    house2.setFloors(2);
    house2.setRooms(10);
    house2.setFeet(4200);
    System.out.println("House 1: \n" + house1.toString() + "\n\n");
    System.out.println("House 2: \n" + house2.toString() + "\n\n");

    //change office properties
    office1.setFireExt(4);
    office1.setTelephones(50);
    System.out.println("Office 1: \n" + office1.toString() + "\n\n");
 }
}

这就是我的类(class) build

public class building 
{
 private int floors;
 private int rooms;
 private int sqft;

 public void setFloors(int floors)
 {
    this.floors = floors;
 }

 public int getFloors()
 {
    return floors;
 }

 public void setRooms(int rooms)
 {
    this.rooms = rooms;
 }

 public int getRooms()
 {
    return rooms;
 }

 public void setFeet(int sqft)
 {
    this.sqft = sqft;
 }

 public int getFeet()
 {
    return sqft;
 }
}

这是我的类(class)房子

public class house extends building
{
 private int bedrooms;
 private int baths;

 public void setBedrooms(int bedrooms)
 {
    this.bedrooms = bedrooms;
 }

 public int getBedrooms()
 {
    return bedrooms;
 }

 public void setBaths(int baths)
 {
    this.baths = baths;
 }

 public int getBaths()
 {
    return baths;
 }
}

最后,办公室

public class office extends building
{
 private int fire;
 private int phones;

 public void setFireExt(int fire)
 {
    this.fire = fire;
 }

 public int getFireExt()
 {
    return fire;
 }

 public void setTelephones(int phones)
 {
    this.phones = phones;
 }

 public int getTelephones()
 {
    return phones;
 }
}

我的问题是,我必须在三个类中添加、减去或修改什么才能使 main 方法正常工作?我是否需要其中的数组?

任何帮助将不胜感激。谢谢!

最佳答案

您必须为您的建筑物、房屋和办公室创建带有参数的构造函数。例如,对于构建:

public building(int floors, int rooms, int sqft) {
    this.floors = floors;
    this.rooms = rooms;
    this.sqft = sqft;
}

在没有指定参数的情况下 build 建筑物对我来说没有意义 - 因此建筑物应该有指定的楼层、房间、平方英尺,至少您应该提供一些默认值:

public class building {
    private int floors = 1;
    private int rooms = 1;
    private int sqft = 1; // Have no idea what is default value here
    ...
}

然后,您将房屋定义为从建筑物延伸出来的类。这意味着您的类(class)房屋是一座建筑,并且必须指定楼层、房间和平方英尺来 build 它:

 public class house extends building {
    private int bedrooms;
    private int baths;

    public house(int floors, int rooms, int sqft) {
       super(floors, rooms, sqft);
    }
    ...
 }

同样,只有卧室和浴室的房屋 builder 是没有意义的,因为没有指定楼层、房间、平方英尺的信息,因此您无法正确初始化建筑。

关于java 继承 - 我需要一个数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33728657/

相关文章:

Python - 从输入获取子类。我必须编写一个单独的函数吗?

vba - 如何避免向下转换为接口(interface)类?

python - 在Python 2.7和Python 3中继承自 "str"

java.security.InvalidKeyException : Wrong algorithm: DESede or TripleDES required

java - Joda-Time : DateTime, DateMidnight 和 LocalDate 使用

java - 聚合两个JavaPairRDD中的数据

java - 在 finally block 中抛出异常是性能问题吗?

java - 什么是 HTTP 请求的 904 事务结束响应

Java 继承 - setter 仅在子类型中

python - 从 Django 中的其他模型填充模型?