Абстрактные классы
От: Dmi3Kondakov  
Дата: 27.07.07 21:20
Оценка:
Здравствуйте, пожалуйста объясните начинающему C-Sharp'еру.NET для чего и с какой целью применяются абстрактные классы? Зачем нужно объявлять метод, если из определения абстракции ты не можешь реализовать его в этом классе?
Re: Абстрактные классы
От: Smooky Россия  
Дата: 27.07.07 21:30
Оценка:
Здравствуйте, Dmi3Kondakov, Вы писали:

DK>Здравствуйте, пожалуйста объясните начинающему C-Sharp'еру.NET для чего и с какой целью применяются абстрактные классы? Зачем нужно объявлять метод, если из определения абстракции ты не можешь реализовать его в этом классе?


Абстрактный класс лпределяет интерфейс, экземпляр (объект) этого класса создать нельзя.

// clear interface — abstract class

class Interface
{
public:
void f() = 0; // pure virtual function
}

// implementation

class A: public Interface
{
public:
void f()
{
}
}

Например так устроен COM...

Ну и потом, это одна из основ ООП. А это обширная тема, лучше почитай чтонибудь.
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Re: Абстрактные классы
От: Аноним  
Дата: 27.07.07 21:43
Оценка:
Здравствуйте, Dmi3Kondakov, Вы писали:

DK>Здравствуйте, пожалуйста объясните начинающему C-Sharp'еру.NET для чего и с какой целью применяются абстрактные классы? Зачем нужно объявлять метод, если из определения абстракции ты не можешь реализовать его в этом классе?


наоборот, ты можешь(но не обязан) реализовать этот абстрактный метод в этом классе, но обьект класса не может быть создан, пока у класса есть хоть один не перекрытый абстрактный метод.
Re[2]: Абстрактные классы
От: Dmi3Kondakov  
Дата: 28.07.07 05:58
Оценка:
При попытке написать код абстактного класса прямо в этом классе появляется ошибка компилятора:

Error 1 'ConsoleApplication1.Dima.Func2()' cannot declare a body because it is

Вот код:

abstract class Class1{
    public void Func1()
    {
        Console.WriteLine();
    }

    //Вот абстактный метод, но его нельзя реализовывать
    public abstract void Func2()
    {
        Console.WriteLine();
    }

}



Что значит не перекрытый метод и почему нельзя реализовать абстрактный метод прямо в его классе?
Re[3]: Абстрактные классы
От: Аноним  
Дата: 28.07.07 19:10
Оценка:
Здравствуйте, Dmi3Kondakov, Вы писали:

DK>При попытке написать код абстактного класса прямо в этом классе появляется ошибка компилятора:


DK>Error 1 'ConsoleApplication1.Dima.Func2()' cannot declare a body because it is


DK>Вот код:


DK>
DK>abstract class Class1{
DK>    public void Func1()
DK>    {
DK>        Console.WriteLine();
DK>    }

DK>    //Вот абстактный метод, но его нельзя реализовывать
DK>    public abstract void Func2()
DK>    {
DK>        Console.WriteLine();
DK>    }

DK>}
DK>



DK>Что значит не перекрытый метод и почему нельзя реализовать абстрактный метод прямо в его классе?


Незнаю как в С#!

class A {
public:
virtual void f() = 0 // в произвлдном классе этот метод мы обязаны перекрыть!
{
// Но здесь мы тоже можем кодить...
int i = 0xAAAA;
cout << i << endl;
}
};

class B: public A
{
public:
virtual void f()
{
A::f(); // вызов A::f() — полёт нормальный
}
}

int main()
{
A a; // ошибка! создать оюъект абстрактного класса нельзя!
B b;
b.f(); // Вызов B::f() — полёт нормальный!
}
Re[4]: Абстрактные классы
От: Smooky Россия  
Дата: 28.07.07 19:16
Оценка:
Забыл залогиниться!!!
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.