Абстрактный класс: одиночный конструктор, модификатор доступа? - PullRequest
4 голосов
/ 11 марта 2012

У меня есть следующий фрагмент кода:

public abstract class Foo
{
    protected Foo()
}

Есть ли какая-либо разница в наследовании между использованием защищенного в качестве модификатора доступа или общедоступным?дело.Так что есть разница, и почему люди используют защищенный над общественностью?

Ответы [ 2 ]

6 голосов
/ 11 марта 2012

Там может быть некоторыми тонкими ситуациями, когда это будет иметь значение (и это будет обнаруживаемо с отражением), но по сути они одинаковы.Возможно, понятнее , чтобы сделать его protected, поскольку его нельзя вызвать иначе, как конструктором производного класса.

2 голосов
/ 11 марта 2012

Одно отличие состоит в том, что если вы планируете сериализацию класса, то у вас должен быть конструктор по умолчанию public (по умолчанию это означает, что конструктор не принимает аргументов).В противном случае, как говорит Джон, разница невелика.

...