2013-06-25 3 views
-9

Почему мы используем абстрактный метод, потому что, если мы объявили абстрактный класс, тогда мы должны реализовать этот метод в производном классе, который делает проблему 2times тогда, почему мы не используем простой метод вместо абстрактных методов ????Аннотация метод в oops

+0

В абстрактных классах вы также можете внедрить методы. Вы используете абстрактные методы, чтобы указать, что он не имеет реализации в базовом классе, но должен быть реализован в производном классе. –

ответ

0

При создании абстрактного класса, который имеет множество подклассов, которые выполняют абстрактное поведение и поддерживают контракт абстрактного суперкласса, вы можете писать методы, которые являются агностическими для реализации объекта кодирования, просто зная, что он будет делать, как сказано. Различные подклассы могут получать данные из разных источников, оптимизироваться для разных вещей, иметь разные побочные эффекты и т. Д.

Если вы изучаете школьный класс, ориентированный на объектно-ориентированное программирование, то, вероятно, как и я, ни один из принципов, которые вы узнаете, не сделает смысл - потому что в небольших программах и для того, чтобы сделать примеры программирования легко усваиваемыми, они ДОЛЖНЫ быть маленькими, ООП обычно просто добавляет багаж и шаблон. Но чем крупнее ваши программы, тем более многоразовыми, более удобными в разных контекстах, которые они должны быть, более широкими и более грандиозными, чем они должны делать и делать правильно, тем больше методов ООП упрощают процесс кодирования и мышления о коде.

0

Абстрактные методы допускаются к объявлению только в абстрактных классах, что означает, что классы, реализующие абстрактный класс HAS, реализуют абстрактный метод, тогда как любой другой метод абстрактного класса может быть переопределен или использован как есть.

От abstract (C# Reference)

• Абстрактные объявления метода допускается только в абстрактных классах.

• Поскольку декларация абстрактного метода не обеспечивает фактической реализации , нет тела метода; объявление метода просто заканчивается точкой с запятой и нет фигурных скобок ({}), следующих за подписи. Реализация обеспечивается переопределяющим методом override (C# Reference), который является членом не абстрактного класса .

0
abstract class A{ 
    abstract void method1(); 
    void method2(){ 
     //implementation 
    } 

} 

class B extends A{ 
    public void method1(){ 
     // implementation 
    } 
} 

class C extends A{ 
    public void method1(){ 
     // implementation 
    } 
} 

Скажет В и С, имеет два подкласса A., которые имеют общий метод method2, но другой метод method1. Таким образом, вы можете расширить A в обоих классах. Там общий метод будет унаследован автоматически. И там вы можете определить свое поведение, реализуя метод1 в подклассах.

+0

thnx StinePike. –

+0

@shaktisingh добро пожаловать. Если вы считаете, что какой-либо ответ помог вам, вы можете поддержать или принять – stinepike

2
abstract class Animal 
    { 
     abstract public void Voice(); // 
    } 

    class Dog : Animal 
    { 
     public void Voice() 
     { 
      Console.WriteLine("bark!"); 
     } 
    } 

    class Cat: Animal 
    { 
     public void Voice() 
     { 
      Console.WriteLine("meow!"); 
     } 
    } 

Посмотрите на абстрактный метод Голос. Как это должно быть, если вы воображаете, что это голос абстрактного животного?