2014-02-08 5 views
0

Я действительно стараюсь полчаса, чтобы понять это page, НО, похоже, я никогда не могу понять, что они набирают, из него я не могу найти разницу между базовым классом или Аннотация.как использовать абстрактный класс

Он ничего не показывает, как использовать его, но только как его объявить. И я считаю, что это так же, как и базовый класс, как будто нет разницы.

Может ли кто-нибудь показать мне полезные примеры абстрактных классов? Предпочтительно в коде C#, пожалуйста. Класс Witch Base не может сделать.

ответ

3

Абстрактный класс просто не может быть реализован (как в создании). Вот и все. Базовый класс может быть.

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

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

+0

Nit: абстрактный класс * может * быть (и обычно есть) также базовым классом. – user2864740

+0

, так что он все еще линейно не может быть раздвоен? – MilitaryG

0

Абстрактные классы являются «полуисполнениями» класса. Они могут быть частично реализованы с использованием некоторых общих функций, но оставить часть реализации наследующим классам. У вас может быть абстрактный класс под названием Animal, который реализовал некоторые общие поведения/значения, такие как Age, Name, SetAge(...).. Вы также можете иметь методы, которые не реализованы (они абстрактны), очень похожи на интерфейс.

Интерфейсы - это просто контракты, которые определяют поведение, которое должно быть доступно для класса. У вас может быть такой интерфейс, как IWalker, для которого требуется общедоступный метод Walk(), но не существует конкретных особенностей его реализации.

источник: What are some practical examples of abstract classes in java?

Еще примеры:

0

простой пример здесь, надеюсь, его полезные

Abstract class in c# example

+0

Обязательно добавьте резюме или соответствующую выдержку, относящуюся к заданному вопросу. – user2864740

0

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

public abstract void Import(Oasis OasisSource); 

Если вы хотите, чтобы все дети этого абстрактного класса реализовать там собственную Import функциональность, в противном случае реализовать функциональные возможности в базовый абстрактный класс, отметьте его как виртуальный, чтобы дети могли переопределить, если необходимо.

0

классы могут быть классифицированы на 3 категории

1. Class 
2. Abstract class 
3. Interface 
  1. класс содержит только прямые методы, т.е. методы, и это тело также определены. класс не поддерживает множественное наследование.
  2. Аннотация содержит как прямые методы, так и абстрактные методы (т. Е. Метод без тела называется абстрактным методом) для методов такого типа тела, которые мы должны определить, наследуя абстрактный класс в базовый класс, а метод должен быть определен в производного класса.
  3. Интерфейсы содержат только абстрактные методы и что методы должны быть определены в производном классе, если базовый класс также не определил тело метода, тогда производный класс также рассматривается как интерфейс, и, наконец, эти методы должны быть определены перед использованием. Интерфейс поддерживает множественное наследование.

надеюсь, что это может быть полезно для U,

0

Это способ обмена информацией через классы без фактического создания класса.

Если у вас никогда не будет необходимости в создании определенного класса, но вы хотите предоставить членам и методам, которые могут использоваться всеми детьми, используйте реферат.

Таким образом, ваш (дочерний) класс просто наследует (расширяется) от абстрактного класса.

Рассмотрим это:

Компания имеет сотрудников

Some employees are engineers 
Some employees work executives 

Таким образом, мы не хотим работника быть бетон (тот, который может быть инстанцированный) класс. Давайте создадим реферат.

abstract class Employee 
{ 
    protected $employeeID=''; 
    protected $annualSalary=NULL; 
    abstract protected function setEmployeeID(); 
    abstract protected function setAnnualSalary(); 

    public function getEmployeeID() 
    { 
     return $this->employeeID; 
    } 

    public function getAnnualSalary() 
    { 
     return $this->annualSalaryID; 
    } 

} 


class Engineer extends Employee 
{ 
    protected function setEmployeeID() 
    { 
    //read from db, etc. 
    } 
    protected function setAnnualSalary() 
    { 
    //beg HR for a raise 
    } 
} 

class Executive extends Employee 
{ 
    protected function setEmployeeID() 
    { 
    //read from super-special db, etc. 
    } 
    protected function setAnnualSalary() 
    { 
    //definitely a large number 
    } 
} 
Смежные вопросы