【发布时间】:2018-02-20 10:39:42
【问题描述】:
我希望验证我对何时/为什么使用抽象或接口的理解。
我的例子与人类有关。人类可以是男人或女人。一个人在生活中可以有不同的职业。所以这就是我使用它们的方式:
我将这些职业声明为界面,因为它将建立人类在该职业中可以做什么的合同。示例:
Interface SoftwareEngineer{
code();
}
Interface TruckDriver{
driveTruck();
}
Interface Pilot{
flyPlane();
}
我将把男人和女人宣布为抽象类——因为男人和女人会决定这个人是谁。
Abstract Man{
}
Abstract Woman{
}
用于定义人的类可以实现职业接口来定义人可以做什么,人将扩展抽象类来定义他/她是谁。
Class Mark extends Man, Implements SoftwareEngineer{
code(){
}
}
根据我的理解,这就是我将如何解释一些关于接口和抽象差异的方法。但我想知道如何回答以下两个问题:
你不能实例化一个抽象类,那么如果你把男人和女人当成抽象的,你怎么能实例化这些类。那怎么可能有用呢?
你为什么要把 Man 和 Woman 抽象化,你为什么不能把它们作为一个界面。类将实现它们而不是扩展。
这些是我问自己的问题。我可能在这里遗漏了一些东西。欣赏此示例中的见解。
【问题讨论】:
-
为什么
Man是一个抽象类?Man和Woman应该是具体的类。Mark不应该是一个类;而Human应该有一个name字段,而Man的instance 应该有一个名称"Mark"。 -
谢谢...我试图看看我是否可以在我的示例中使用任何抽象类,所以我使用了 Man。但是,正如您解释的那样,这似乎没有意义。我可以在示例中引入任何可以解释某人的抽象类吗?
-
我觉得你的声明是错误的。让我们以一个现实世界的场景为例,你不能说
Man和Woman是未完成的事情,就像human。你可以有Human,因为抽象的男人和女人可以扩展 -
这个链接可以给你一些想法:stackoverflow.com/questions/16781329/…
-
你的意思是 Humans 可以是抽象类,Man 和 Woman 可以是具体类?
标签: java oop interface abstract-class