Shape.java
Абстрактный класс или публичный метод с использованием интерфейса
public interface Shape {
String draw();
void calcSomething();
}
Square.java
public class Square implements Shape {
@Override
public String draw() {
return "SQUARE";
}
@Override
public void calcSomething() {
}
}
Когда я реализовать interface
, метод, который я осуществил должен быть public
.
Я хочу сделать draw()
общественный метод, но calcSomething()
частный или защищенный.
Я прошел через Interfaces in Java: cannot make implemented methods protected or private . И там нет прямого способа сделать это
Таким образом, вместо того, чтобы использовать интерфейс я планирую использовать абстрактный класс
Shape.java
с использованием абстрактного класса
public abstract class Shape {
abstract public String draw();
abstract protected void calcSomething();
}
Square.java
, который реализует Shape
аннотация класс
public class Square extends Shape {
@Override
public String draw() {
return "SQUARE";
}
@Override
protected void calcSomething() {
}
}
Какой из них выбрать. Должен ли я использовать интерфейс и сделать calcSomething()
общественности или я должен использовать абстрактный класс и сделать calcSomething()
защищены
мнение: i'd будет использовать второй, чтобы иметь возможность сохранять координаты фигуры в «List» или что-то в этом роде.Но абстрактный класс имел бы смысл только в том случае, если вы хотите хранить информацию для этого 'Shape', в то же время позволяя пространство для абстрактных реализаций для наследующих классов. Как sidenode, если бы я читал метод 'draw', я бы предпочел, чтобы он что-то нарисовал, вместо того, чтобы просто возвращать' String'. Я мог бы подумать о том, чтобы переименовать этот метод, чтобы представить, что он действительно делает. – SomeJavaGuy
Почему 'calcSomething' является приватным, если он находится в интерфейсе? –
У меня есть другой класс, который реализует Shape. Все они используют одно и то же имя метода для вычисления чего-то. Я просто хотел добавить этот метод в интерфейс. @ReutSharabani. Возможно, я ошибаюсь так думать. Пожалуйста, исправьте меня, если я ошибаюсь –