Может иметь абстрактный класс , реализующий все его методы - без абстрактных методов в нем.В чем смысл абстрактного класса без абстрактных методов?
Например .:
public abstract class someClass {
int a;
public someClass (int a) { this.a = a; }
public void m1() { /* do something */ }
private void m2() { /* do something else */ }
}
В чем преимущество, если таковые имеются, имеющие такой абстрактный класс по сравнению с наличием того же класса, как конкретный один вместо этого?
Один я могу думать о том, что, когда я объявляю его абстрактным, он не будет создан. Однако я могу иметь такой же эффект, делая его конкретным и его конструктором (-ами) частным.
TIA.
// ==================
EDIT: Один другого использования я могу думать:
может быть расширение другого абстрактного класса или реализуя интерфейс без реализации абстрактных методов этого класса, хотя он реализует все свои методы. за что бы это ни стоило.
Вы можете предоставить никому из инстанцировании этого класса. – Kon
Если вы сделаете конструктор закрытым, тогда вы превратите его в одноэлементный или вам понадобится публичный статический метод, чтобы получить экземпляр класса, который в качестве абстрактного класса поможет вам в наследовании ... – StackFlowed
Создание всех конструкторов 'protected' (следите за дефолтом) имеет очень похожий эффект и на самом деле является моим предпочтительным способом сделать это. Возможно, это опечатка в OP. – 5gon12eder