Доступ к функции родительского класса в Java - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть два дочерних класса B и C, которые наследуются от одного родительского класса A. Возможно ли, что я могу сделать определенные функции класса A доступными в B, но не в C в java?

Ответы [ 3 ]

1 голос
/ 05 февраля 2020

Ну, я не знаю, как это запретить в Кодексе. Но вы можете просто переопределить, а затем не заполнять их.

0 голосов
/ 05 февраля 2020

По моему мнению, это невозможно.

Давайте посмотрим на один пример в реальном времени -> У Родителя есть два ребенка, тогда оба могут получить доступ к родительскому свойству. Нет никаких ограничений на то, что вы не может использовать это или вы не можете использовать это.

И если вы хотите сделать это, то вы можете неявно написать logi c в классе B также

0 голосов
/ 05 февраля 2020

Если вы хотите запретить вызов destroyEverything() из класса C:

public class A {

  public void travel() {
     System.out.println("Travel from A");
  }

  public void makePee() {
     System.out.println("Call from A");
  }

}

public class B extends A {

  public void travel() {
     super.travel();
     System.out.println("Travel from B");
  }

   public void makePee() {
      super.makePee();
      System.out.println("Call from B");
   }

}

Затем на C:

public class C extends A {

  public void travel() {
     super.travel();
     System.out.println("Travel from C");
  }

   public void makePee(){
      throw new UnsupportedOperationException("Not supported from C");
   }
}

НО, если что вы хотите, чтобы не наследовал вещи от A , это, вероятно, недостаток в дизайне вашей иерархии классов, и класс C не должен наследовать от A.

Пример ошибки проектирования: Класс A - Животное , класс B - Бобр , и вы хотите, чтобы ваш класс C Кадилла c наследовал материал от Животного поскольку Животное уже имеет метод путешествия .

Так как, возможно, вы не хотите наследовать метод makePee (каждое животное мочится, но Cadillacs нет), лучше двигаться Cadillacs (класс C) в другую иерархию классов или найти другой дизайн класса

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