Вызов метода базового метода - PullRequest
21 голосов
/ 21 октября 2010

Есть ли в Java или C # конструкция, которая заставляет наследуемые классы вызывать базовую реализацию?Вы можете вызвать super () или base (), но возможно ли, чтобы он вызывал ошибку времени компиляции, если он не вызывается?Это было бы очень удобно ..

- edit -

Мне в основном любопытно переопределить методы.

Ответы [ 12 ]

0 голосов
/ 21 октября 2010

РЕДАКТИРОВАТЬ Неправильная конструкция в качестве конструктора. Оставляя как CW, так как это соответствует очень ограниченному подмножеству проблемы.

В C # вы можете форсировать это поведение, определяя один конструктор, имеющий хотя бы один параметр в базовом типе. Это удаляет конструктор по умолчанию и вынуждает производные типы явно вызывать указанную базу, или они получают ошибку компиляции.

class Parent {
  protected Parent(int id) {
  }
}

class Child : Parent { 
  // Does not compile
  public Child() {}
  // Also does not compile
  public Child(int id) { }
  // Compiles
  public Child() :base(42) {}

}
0 голосов
/ 21 октября 2010

Не думайте, что есть какое-то реальное встроенное решение.Я уверен, что есть отдельные инструменты анализа кода, которые могут сделать это.

...