Java 如何编写面向对象的程序,用超类、子类和接口实例化对象和接口

Java 如何编写面向对象的程序,用超类、子类和接口实例化对象和接口,java,object,inheritance,Java,Object,Inheritance,在学校里,我被问到这样一个问题: 前言:在OOP中,当类的对象被创建时,类被实例化。分析下面的图1并用它回答以下问题 使用继承和接口的概念,生成类、对象和/或接口的列表,指出: 一,。是/是基类、父类或超类。答案是动物类 二,。是/是派生的、子类、子类。答案是鸟类、爬行动物和鱼类 iii.is/are接口。这个问题的答案是“不要飞”的苍蝇或“会酸高”的苍蝇 四、实现继承的关键字。答案是“扩展” v用于实现接口的关键字。答案是:工具 b) 使用上面的答案,创建一个Java OOP程序,该程序实例

在学校里,我被问到这样一个问题:

前言:在OOP中,当类的对象被创建时,类被实例化。分析下面的图1并用它回答以下问题

使用继承和接口的概念,生成类、对象和/或接口的列表,指出:

一,。是/是基类、父类或超类。答案是动物类 二,。是/是派生的、子类、子类。答案是鸟类、爬行动物和鱼类 iii.is/are接口。这个问题的答案是“不要飞”的苍蝇或“会酸高”的苍蝇 四、实现继承的关键字。答案是“扩展” v用于实现接口的关键字。答案是:工具

b) 使用上面的答案,创建一个Java OOP程序,该程序实例化所需的对象并调用它们的相关方法

对于这个问题,我能够编写以下代码:

public class Animal {
public class Animal {

//  Properties gender, age, weight
  public String gender;
  public String age;
  public String weight;

//  Constructor to inherit for other classes
  Animal(String gender, String age, String weight) {
    this.gender = gender;
    this.age = age;
    this.weight = weight;
  }

//  Methods to inherit
  public void sleep() {
    System.out.println("Animal can sleep");
  }

  public void move() {
    System.out.println("Animal can move");
  }

  public void eat() {
    System.out.println("Animal can eat");
  }

}


//Bird class inherits Animal
class Bird extends Animal {

  Bird(String gender, String age, String weight) {
    super(gender, age, weight);
  }
}

//Reptile Class inherits Animal
class Reptile extends Animal {

  Reptile(String gender, String age, String weight) {
    super(gender, age, weight);
  }

  public void leap() {
    System.out.println("Frog can leap");
  }

  Reptile Frog = new Reptile("Male", "1yr", "1kg");

}

//Fish Class inherits Animal
class Fish extends Animal {

  Fish(String gender, String age, String weight) {
    super(gender, age, weight);
  }

  Fish Shark = new Fish("Male", "3yrs", "150kg");
}


// Interface Fly
interface abilityToFly {
  public void Fly();

}


//Eagle inherits Bird and uses fly ability
class Eagle extends Bird implements  abilityToFly {

  Eagle(String gender, String age, String weight) {
    super("Female", "2yrs", "2kg");
  }



  @Override
  public void Fly() {
    System.out.println("It can Fly");
  }
}

//Chicken inherits Bird but does not have the ability to fly
class Chicken extends Bird implements abilityToFly {

  Chicken(String gender, String age, String weight) {
    super("Female", "1yr", "1kg");
  }

  @Override
  public void Fly() {
    System.out.println("It can not Fly");
  }
}

我不确定我是否以正确的方式完成了这项工作,是否有人可以为我更正此代码并告诉我如何实例化它。谢谢你

概括起来,再作些改动也不为过

您已经正确地完成了
封装、继承
。你可以用一种小改进的方法来处理下面的事情

爬行动物
应该是一个
扩展动物的类
Frog
应该是另一个类,它有
leap
和一些其他它自己的属性。类似地
Fish

我不确定这些分类。根据
图,我将向您解释
oops概念

  • 可以有
    n
    数量的
    爬行动物
    每种都可以有自己的 行为。让我们假设
    gradive1
    边吃边发声,而
    gradive2
    没有 所以你可以有如下的东西

    public abstract Reptile extends Animal{
       public abstract leap();
    }
    
    public class Reptile1 extends Reptile {
       //Define leap behaviour
       //Define other behaviour and characteristics
    }
    
    public class Reptile2 extends Reptile {
       //Define leap behaviour 
       //Define other behaviour and characteristics
    }
    
    在实例化时,您可以执行
    爬行动物青蛙=新青蛙()-
    多态性

  • 您需要将类属性设置为
    private
    并添加
    getter,
    设置器
    -<代码>抽象
  • 我认为
    Chicken
    不需要实现
    fly
    接口,因为它不能实现这种行为

  • 除此之外,你的
    初始化看起来不错。

    青蛙不是爬行动物。现在,我得到了我的胸部,看看这篇文章
     private String gender;
     private String age;
     private String weight;
    
    public String getGender() {
      return gender;
    }
    
    public void setGender(String gender) {
       //validate if needed - only accepted genders 
       //to avoid malformed data/input
       this.gender = gender;
    }