Как написать объектно-ориентированную программу для создания экземпляров объектов и интерфейсов с суперклассом, подклассами и интерфейсами - PullRequest
0 голосов
/ 17 июня 2020

В школе мне задали этот вопрос:

Преамбула: В OOP считается, что класс создается при создании объекта класса. Проанализируйте приведенный ниже рисунок 1 и используйте его для ответа на следующие вопросы.

enter image description here

Используя концепцию наследования и интерфейсов, создайте список классов, объектов и / или интерфейс, указывающий, что:

i. является / являются базовым, родительским или суперклассом (ами). Ответ на это - класс животных II. является производным, дочерним, подклассом (ами). Ответом на это являются классы Bird, Reptile и Fi sh iii. есть / являются интерфейсом (ами). Ответ на этот вопрос - не летать, иначе может скиснуть iv. ключевое слово для реализации наследования. Ответ на этот вопрос - "расширяет" v. Ключевое слово для реализации интерфейсов. Ответ на этот вопрос - реализации.

б) Используя приведенные выше ответы, создайте программу 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");
  }
}

Я не уверен, правильно ли я сделал это, и может ли кто-нибудь исправить этот код для меня и сообщить мне, как его создать. Спасибо

1 Ответ

1 голос
/ 17 июня 2020

Его можно немного изменить, чтобы обобщить вещи.

Вы сделали Encapsulation, inheritance правильно. Вы также можете немного улучшить следующие вещи.

Reptile и Fish должны быть классом, который extends Animal. Frog должен быть другим классом, который имеет leap и несколько других собственных свойств. Аналогично Fish

Я не уверен в этой классификации. В соответствии со схемой class я объясняю вам oops concepts.

  1. Может быть n количество reptiles Каждый может иметь собственное поведение. Допустим, reptile1 звучит во время еды, а reptile2 - нет.

Таким образом, вы можете получить что-то, как показано ниже.

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
}

Во время создания экземпляра вы можете сделать Reptile frog = new Frog(); - polymorphism

Вам нужно установить свойства класса как private и добавить getter, setters. - Abstraction
 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;
}
Я думаю, что Chicken не требует реализации интерфейса fly, так как он не может этого делать.

В остальном ваш initialisation выглядит хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...