Ответ 1
Сделать класс базовым классом abstract
.
abstract class Person { }
class Programmer : Person { }
var person = new Person(); // compile time error
var programmer = new Programmer(); // ok
Каков самый простой способ заставить С# не создавать экземпляр класса, если наследовать?
Звучит странно, но я не хочу объяснять, почему. У меня есть базовый класс и два класса, которые наследуют его. Я хочу использовать только производный класс, а не базу. Класс вывода не имеет дополнительных функций. Самый простой способ НЕ разрешить мне писать новый BaseClass(); поэтому я не случайно его использую? У меня есть функции, которые работают с базовым классом, а не с производным.
Сделать класс базовым классом abstract
.
abstract class Person { }
class Programmer : Person { }
var person = new Person(); // compile time error
var programmer = new Programmer(); // ok
Задайте класс для абстрактного:
public abstract BaseClass
{
}
Может ли базовый класс быть абстрактным? Это сделало бы это.
public abstract class BaseClass {
...
}
вместо нормального:
"public Class MyClass"
сделать это
"public abstract Class MyClass"
Создайте конструктор BaseClass
protected:
public class BaseClass {
protected BaseClass()
{
// DO SOMETHING
}
}
public class Derived : BaseClass {
public Derived() {}
}
То, как вы описываете свою потребность, делает ваш класс abstract
способом. Это будет
не позволяйте вам создавать экземпляр базового класса и позволят вам вызывать функции на
Это. Это также позволит вам отмечать функции и свойства как абстрактные и
заставить унаследованные классы реализовать их.
Если вам не нужно было делиться кодом, интерфейс был бы приятным вариантом. Это позволяет вам реализуйте его таким образом, который очень похож на класс abstarct и внедрения в нее.
Надеемся, что это добавит некоторую ценность.
Использовать защищенный конструктор для базового класса