Вы должны реализовать все методы вашего interface
, если класс, реализующий interface
, не является abstract
.
Если вы ограничены, вы хотите предопределить один или несколько методов, то вы можете использовать abstract class
вместо interface
. Абстрактные методы в abstract class
- это методы, которые должны быть реализованы любым классом, который расширяет abstract class
. Не абстрактные методы фактически реализованы в самом abstract class
.
Например,
public abstract class MyClass
{
abstract void methodOne();
void methodTwo()
{
//implementation code
}
}
public class MyOtherClass extends MyClass
{
void methodOne()
{
//implementation code
}
}
Вот ссылка на Abstract Classes and Methods.
EDIT 1 (в ответ на комментарий):
Я не совсем уверен, что вы подразумеваете под бременем. Все, что я говорю, это то, что если вы хотите, чтобы все методы были реализованы классом, используйте интерфейс.
Если вы хотите только некоторые из методов, реализованных в классе, то вы можете использовать абстрактный класс вместо интерфейса
или
Если это имеет смысл, есть абстрактный класс реализует интерфейс (частично), а затем содержит оставшиеся методы, реализуемые тем, что расширяет абстрактный класс.
Оба подхода являются разумными. Это зависит от того, что вам действительно нужно делать.
EDIT 2 (в ответ на дополнительные комментарии):
Предоставление одного класса пользователей с дополнительными функциями, кажется идеальным приложением для всего расширения «нормальный класс пользователей» с классом «супер пользователя», который имеет дополнительный функции. Если вам нужен интерфейс для класса «суперпользователь», вы можете создать интерфейс, расширяющий интерфейс, реализованный классом «обычный пользователь».
Нет, что возможно. Но чего вы хотите достичь? –
Что означает _restrict_? –
Благодарю всех вас за ответы. создание другого > absract класс в порядке, но разве это не может быть обузой? И Ограничением я имею в виду > ограничение пользователя. – user2988092