java - 构建类层次结构的最佳方法?

标签 java inheritance

我正在尝试一项基于类层次结构的挑战。我必须尝试评估并正确构建包含基于运输的车辆的层次结构。以下是类(class)选项:

  • 自行车
  • 汽车
  • 循环
  • 喷气式飞机
  • 公路车辆
  • 可加油
  • 火车
  • 交通
  • 三轮车

在结构方面,我必须决定哪些类是抽象的,哪些类扩展哪些类以及哪些类是接口(interface)。

这是我到目前为止所想到的:

交通

public abstract class Transport 
{

    //Super class. All vehicles are a form of transportation.

}

自行车

public abstract class Bicycle extends RoadVehicle
{

    //Bicycle is a road vehicle. Does not implement Refuelable as it does not use fuel. Is abstract because Cycle is its sub-class.

}

汽车

public class Car extends RoadVehicle implements Refuelable
{

    //Extends RoadVehicle which extends Transport and also implements Refuelable as it uses fuel.

}

循环

public class Cycle extends Bicycle
{

    //Cycle is an act which is carried out when using a Bicycle so it extends Bicycle.

}

喷气式飞机

public class JetPlane extends Transport implements Refuelable
    {

        //JetPlane is not a road vehicle but directly extends Transport because it is used as a form of transport, also implements Refuelable.

    }

公路车辆

public abstract class RoadVehicle extends Transport 
{

    //All classs that are road vehicles extends this clss. This seperates the road vehicles from the non-road vehicles.

}

可加油

public interface Refuelable 
{

    //An interface that declares which tyypes of transport use fuel and which do not.

}

火车

public class Train extends Transport implements Refuelable
{

    //Trains are not a road veicle but do extend Transport and are refuelable.

}

三轮车

public class Tricycle extends Transport
{

//Tricycle is a form of transport for children, it is not refuelable and does not operate on the road.

}

这是正确的还是您能看到任何错误吗?我这样做是为了测试我对继承的了解,因此我们将不胜感激任何建议或指示,谢谢。

最佳答案

鉴于我们无法说出每个实体中应该包含的方法,我将从以下内容开始:

interface Transport
interface Refuelable
interface RoadVehicle extends Transport
interface Cycle extends RoadVehicle

class Bicycle implements Cycle
class Tricycle implements Cycle
class Car implements RoadVehicle, Refuelable
class JetPlane implements Transport, Refuelable
class Train implements Transport

关于java - 构建类层次结构的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40853958/

相关文章:

java - JPA Criteria 查询与 child 不工作的谓词的一对多关系

c++ 将 vector<Parent*> 的元素传递给需要子对象的对象方法

xaml - 如何从Silverlight中的XAML中定义的用户控件正确继承

c# - 基类、派生类、Iclass?

C++ 多态性没有按预期工作

java - 使用继承(使用抽象类)在自定义框架内为子类提供一小部分方法的更优雅的方式?

java - 使用 Java 中的注释制作自定义表单

java - 如何更改数据库连接来创建 java 应用程序的安装程序?

java - 将选择与自动完成 TextView 中适配器中的项目相关联

java - 是什么导致 switch 语句中生成的 R.id.xxx 值出现 "constant expression required"错误?