关于OOP和继承的类

时间:2016-02-16 12:58:29

标签: java oop

我是新来的...... 我对OOP规则有一点疑问。 让我们说我们有3个班:Bird,Cat&狗。 对于dog和cat都有一个fourlegs()方法,并且所有这些方法都有一个eat()方法。 完成此任务的最佳方法是什么: *使用eat()创建Animal类,使用fourlegs()创建Pet类,该类将继承自Animal类。 之后,cat& dog类继承自Pet,而bird只继承自Animal。 *因为面向对象的几个类有不同的mathods在这里不相关。 非常感谢你!

3 个答案:

答案 0 :(得分:1)

我想你几乎回答了自己的问题。使用“Animal”接口作为顶级节点创建一个类层次结构。

I made an example of the hierarchy here.

此外,继承和多态是OOP的一些基本要素,所以我没有得到你的最后一句话。

答案 1 :(得分:1)

您可以创建一个接口/抽象类AnimalBirdCatDog继承自Animal。 由于腿数是通过使它们依赖于MammalPet或其他东西而无法分类的,因此我将定义一个接口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)

您可以使用以下示例代码:

  1. 声明类Animal

    class Animal(){
    
        void eat(){
            ... do something ...
        }
    
    }
    
  2. 声明班级宠物

     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 ...
          }
     }
    
  3. 宣布班级狗和猫

     class Dog extends Pet{
         /* This class has inherited both eat() and fourlegs() from class Pet. */
         ...
     }
    
  4. 和Cat。类相同。

    1. 声明类Bird

       class Bird extends Animal{
             /* This class has inherited eat() method as declared in class Animal.    
             ...
       } 
      
    2. OOP编程肯定与本练习有关,因为你需要使用继承(这是OOP的一个特性)来实现它。