2010-07-02 2 views

ответ

4

Абстрактные классы предназначены для расширения, каждый конструктор от дочернего must perform a call to a constructor from the base class, поэтому вам нужны конструкторы в вашем абстрактном классе.

Относительный класс - это скелет, поэтому нет смысла его создавать непосредственно, так как он еще неполный (дети предоставят остальное).

2

Пример:

public abstract class BaseClass 
{ 
    private String member; 

    public BaseClass(String member) 
    { 
     this.member = member; 
    } 

    ... abstract methods... 
} 

public class ImplementingClass extends BaseClass 
{ 
    public ImplementingClass(String member) 
    { 
     /* Implementing class must call a constructor from the abstract class */ 
     super(member); 
    } 

    ... method implementations... 
} 
2

Мы можем использовать конструктор абстрактного класса для выполнения кода, который имеет отношение к каждому подклассу. Таким образом, предотвращение дублирования кода

1

Абстрактные классы могут иметь поля и не абстрактные методы (что делает его абстрактным классом rater, чем интерфейс). Поля, вероятно, должны быть инициализированы, когда экземпляр класса, который его расширяет, создается.

Имея конструктор в абстрактном классе позволяет вызывать super(foo); инициализировать их, в отличие от делать это непосредственно

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