Я думаю, что вы просите другой вопрос, чем большинство людей думают (другими словами, кажется, что вы понимаете, что такое abstract
средство).
Вы не можете объявить частный абстрактный метод - компилятор выдает сообщение об ошибке. Оба этих классов не будет скомпилирован:
class Foo
{
private abstract void Bar();
}
class Baz
{
// This one is implicitly private - just like any other
// method declared without an access modifier
abstract void Bah();
}
Компилятор мешает вам объявить бесполезный метод, так как частный абстрактный элемент не может быть использован в производном классе и не имеет реализации (и, следовательно, не использовать) в объявлении класс.
Важно отметить, что модификатор доступа по умолчанию, примененный к абстрактному члену компилятором (если вы не укажете его сами), по-прежнему равен private
, как если бы этот метод не был абстрактным.
+1 для наиболее полного ответа до сих пор. –
Если вопрос "являются абстрактными методами, общедоступными и виртуальными в C#?" Тогда ответ «нет», они «закрыты» по умолчанию и поэтому будут выдавать ошибку компиляции, если не предоставляется доступ. C# не сахарирует все и заставляет нас работать иногда, но даже тогда сообщения об ошибках компилятора делают довольно хорошую работу, держась за руку. – Les