我是新来的...... 我对OOP规则有一点疑问。 让我们说我们有3个班:Bird,Cat&狗。 对于dog和cat都有一个fourlegs()方法,并且所有这些方法都有一个eat()方法。 完成此任务的最佳方法是什么: *使用eat()创建Animal类,使用fourlegs()创建Pet类,该类将继承自Animal类。 之后,cat& dog类继承自Pet,而bird只继承自Animal。 *因为面向对象的几个类有不同的mathods在这里不相关。 非常感谢你!
答案 0 :(得分:1)
我想你几乎回答了自己的问题。使用“Animal”接口作为顶级节点创建一个类层次结构。
I made an example of the hierarchy here.
此外,继承和多态是OOP的一些基本要素,所以我没有得到你的最后一句话。
答案 1 :(得分:1)
您可以创建一个接口/抽象类Animal
。 Bird
,Cat
和Dog
继承自Animal。
由于腿数是通过使它们依赖于Mammal
,Pet
或其他东西而无法分类的,因此我将定义一个接口FourLegged
。这也可以让你不会将fly()
绑定到鸟......有无法飞行的鸟类和可以飞行的昆虫:
public abstract class Animal {}
public interface FourLegged {}
public interface Flyer {}
public class Dog extends Animal implements FourLegged {}
public class Bird extends Animal implements Flyer {}
这取决于您的需求Animal
是接口还是抽象类。
答案 2 :(得分:0)
您可以使用以下示例代码:
声明类Animal
class Animal(){
void eat(){
... do something ...
}
}
声明班级宠物
class Pet() extends Animal{
/* This class has inherited eat() method as declared in class Animal.
If you want to change it, you must use @Override. */
void fourlegs(){
... do something ...
}
}
宣布班级狗和猫
class Dog extends Pet{
/* This class has inherited both eat() and fourlegs() from class Pet. */
...
}
和Cat。类相同。
声明类Bird
class Bird extends Animal{
/* This class has inherited eat() method as declared in class Animal.
...
}
OOP编程肯定与本练习有关,因为你需要使用继承(这是OOP的一个特性)来实现它。