2016-02-10 4 views
3

Есть ли способ в java для расширения нескольких классов? Например, Студент может упоминаться как Личность, а также как Животное (вы получаете мою точку зрения). Если нет, каков путь вокруг него?Расширение нескольких классов

+0

Итак, вы утверждаете, что некоторые ученики - это животные? :) –

+4

Если ученик - это человек и животное, то почему человек не расширяет Animal? Единственный способ - подумать о другой структуре. Либо использование композиции вместо наследования, либо путем предоставления родительскому классу расширения «другого родительского класса». Сначала вы должны попробовать первое предложение: [Использовать композицию над наследованием] (http://stackoverflow.com/questions/11343840/favor-composition-over-inheritance). – Tom

+1

Ближайшая вещь к множественному наследованию в java: https://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html – peter

ответ

1

№. Java не поддерживает множественное наследование.

Вы можете реализовать несколько Interfaces (которые никогда не содержат код за пределами сигнатур методов), но не несколько классов.

+3

Я бы добавил, что с помощью реализации по умолчанию (java 8) расширяется объем интерфейсов! @https: //docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html –

+0

Способы по умолчанию - это точка, которая будет считаться @LouisF. –

0

Грубо сказал, нет. На самом деле расширение из двух классов невозможно, но если оно соответствует вашим потребностям, вы можете использовать интерфейс, то есть класс, в котором вместо наследования методов вы получите конкретный макет всех методов, которые должен иметь класс. Итак, да, с помощью этого метода вы можете использовать несколько классов в качестве интерфейсов, но если вы хотите напомнить реальный код, написанный методом из родительского класса, вы не сможете.

Возможный обход - это сделать больше классов для наследования между ними или сделать родительский класс, который полностью соответствует вашим потребностям в качестве общего родителя.

Например, если у вас есть учащиеся только в вашем коде, вы можете сделать родительский класс и person и animal классами, наследуемыми от него. Но опять же, если код более сложный или не вписывается в эту картину, вы не сможете это сделать, и вам, возможно, придется определить переменные, чтобы проверить, является ли этот указанный класс студентом.

Смежные вопросы