Абстрактный класс - это класс, который никогда не имеет смысла создавать (создавать экземпляры), например, если ваши классы были «Бигл» и «Терьер», «Собака» на самом деле не имеет смысла.
Цвет и тип волос применимы только к «Бигл» и «Терьер», но не «Собака», правильно? Таким образом, это было бы абстрактным на уровне Собаки.
Любой метод, применимый только к одной породе, вообще не существует в «Собаке».
numberOfLegs будет иметь реализацию на уровне «Собака» (не абстрактно), и дети могут просто наследовать его (ничего не говоря о нем).
Обратите внимание, что если вы создавали настоящие собаки, то породы станут абстрактными - также если вы создавали настоящие собаки, им, возможно, пришлось бы переоценить число очков, чтобы учесть отдельных собак, которые имели несчастные случаи.
Если вы новичок в OO, однако, могу ли я сделать предложение? Держите все наследование до минимума, делайте это только тогда, когда вам действительно нужно. Кажется, что, когда хороший программист «Gets» OO, их первая мысль заключается в том, чтобы связать все с одним гигантским деревом объектов - это не очень хорошо работает. Вам лучше использовать инкапсуляцию вместо того, чтобы распространяться почти каждый раз.
очень ясно. Спасибо большое. – Rouge