Можем ли мы иметь конкретный суперкласс, а затем абстрактный подкласс? Может кто-нибудь объяснить, как это работает?Как работает абстрактный подкласс в Java?
Спасибо
Можем ли мы иметь конкретный суперкласс, а затем абстрактный подкласс? Может кто-нибудь объяснить, как это работает?Как работает абстрактный подкласс в Java?
Спасибо
Это уже происходит во всем мире, потому что все классы наследуют прямо или косвенно от Object
. Так, например, AbstractCollection
- абстрактный класс, который наследуется от конкретного класса Object
.
В этом нет ничего особенного. Конкретные подклассы абстрактного класса по-прежнему должны реализовывать абстрактные методы.
+1 все абстрактные классы наследуют от Object – Bohemian
У вас может быть это да. Единственное ограничение о классе существо реферата является то, что:
Когда наследуется, абстрактные методы должны быть реализованы или унаследованный класс должен быть абстрактным, а также.
Это не может быть создан
Поскольку абстрактные классы могут быть реализованы методы, то вы можете использовать методы неабстрактных суперкласса при определении методов в абстрактном классе. Кроме того, тот, кто наследует от абстрактного класса получает методы из неабстрактного класса супер, как это:
Автомобиля наследует абстрактный автомобиль наследует Ferrari
Тогда Ferrari получит фактические реализованные методы транспортного средства.
Да, вы можете, и до тех пор, пока вы не расширяете этот класс, вам не нужно реализовывать какие-либо методы.
Abstract class AbstractClass extends ConcreteClass{
public abstract void method();
}
class ConcreteClass {
public void doSomething(){
}
}
в AbstractClass вы не должны реализовать метод DoSomething, и в ConcreteClass, вы не должны реализовать метод(). Было бы лучше, если бы вы просто попробуйте сами, и я рекомендую вам прочитать эту книгу http://www.amazon.com/SCJP-Certified-Programmer-Java-310-065/dp/0071591060
Спасибо, Халила.
Вы можете сделать это при условии, что конкретный класс, который вы продлеваете, не является окончательным. И, как и все абстрактные классы, они не могут быть созданы.
Пример использования для этого, если вы хотите, чтобы ваши Наследники к, например, переописать некоторые методы ... Скажи:
public abstract class MustHaveEqualsAndHashCode()
{
@Override
public abstract int hashCode();
@Override
public abstract boolean equals(Object obj);
}
Заметим, однако, что это довольно редко. В большинстве случаев его можно с успехом заменить композицией.
Почему бы вам просто не попробовать? Я не понимаю, почему это невозможно. – Polygnome
Вы можете создать класс и расширить его и назвать подкласс как абстрактный класс. Напишите в них оба оператора system.out.println. Определите, какой экземпляр класса вы можете создать, и проверьте, какой результат. Если у вас есть сомнения, не стесняйтесь спрашивать, и мы поможем вам –
Мы можем, но не должны. –