Наследование Java с дженериками - PullRequest
0 голосов
/ 14 февраля 2019

Может ли кто-нибудь объяснить (например, для чайников) следующие примеры наследования в Java:

1) public class Dog <T extends Animal> {....
2) public class Buldog extends Dog<DogFood, DogCommands> {....
3) public class Buldog<T extends DogFood, K extends DogCommands> extends Animal implements LivingBeign, LivingThing<T,K> { ....

1 Ответ

0 голосов
/ 14 февраля 2019
1) public class Dog <T extends Animal> {...

В вашем классе Dog будет универсальный тип, который наследует переменные и методы из класса (возможно, абстрактный класс Animal). Этот T должен иметь и свойство animal. Например, предположим, что у вас есть класс Mammalian.Мы знаем, что все млекопитающие являются животными, поэтому у них есть то, что есть у всех животных, и они могут то, что могут все животные.

Итак, вы можете назвать это как

public Dog<Mammalian> myDog = ...

Существует другая ситуация.

2) public class Buldog extends Dog<DogFood, DogCommands> {....

Таким образом, ваш класс собаки должен быть написан как

/** T refers the food, and K refers commands*/
public class Dog<T,K> {....

Так что, если вы хотите расширить свой класс с помощью Bulldog, вы можете оставить универсальные или указать эти универсальные типы ..

3) public class Buldog<T extends DogFood, K extends DogCommands> extends Animal implements LivingBeign, LivingThing<T,K> { ....

Это также просто, как приведенные выше коды.Разница в том, что вам нужен подкласс DogFood, который может быть любым, это может быть Pap, Milk или Meat, а также некоторый подкласс DogCommands, например SitCommand, PlayCommand. И когда вы создаете Buldog, вы знаете, что это Animal, поэтомувы не хотите снова писать свойства и методы animal, и поскольку в Java вы не можете использовать множественное наследование, вам нужны и другие методы интерфейса в вашем классе.

Надеюсь, теперь это более понятно.

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