Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Основы С#. Наследование классов. Абстрактные методы и полиморфизм. (Лекция 8.1)

Содержание

Наследованиенаследование позволяет создавать новый класс на базе другого. Класс, на базе которого создается новый класс, называется базовым, а базирующийся новый класс – наследником или производным классом.
Основы С# Лекция 8.1Наследование классов. Абстрактные методы и полиморфизм Наследованиенаследование позволяет создавать новый класс на базе другого. Класс, на базе которого создается Объявление наследникамодификаторы class имя_производного_класса: имя_базового_класса{операторы_тела_производного_класса}Конструкция :имя_базового_класса в стандарте C# называется спецификацией базы класса. Модификаторы доступаЧлены базового класса, имеющие статус доступа private, как были недоступны для Модификаторы доступаВ производном классе обычно вводятся новые члены, определяющие новое поведение и this. и base.class Disk // Класс круг  { this. и base. class Program  {    static void Конструкторы при наследованииКонструкторы не наследуются. Конструктор базового класса необходимо явно вызвать из Одноименные методы базового и производного классов1. для методов возможна перегрузка (overload). Одноименные Переопределение метода class Figure // Базовый класс    { Переопределение метода static void Main(string[] args)    { Переопределение методаstatic void Main(string[] args)    { Виртуальные методы public virtual void print(); для базового классаpublic override void print(); для производных классов Виртуальные методы и полиморфизм public virtual void print(); для базового классаpublic override Абстрактные методы и классы. ОсобенностиАбстрактный метод может быть объявлен только в абстрактном Абстрактные методы и классы. ОсобенностиАбстрактный метод может быть объявлен только в абстрактном Абстрактные методы и классы.abstract class Figure // Абстрактный базовый класс  { Абстрактные методы и классы. class Rectangle : Figure  { Абстрактные методы и классы.static void Main(string[] args)    {
Слайды презентации

Слайд 2 Наследование
наследование позволяет создавать новый класс на базе другого. Класс,

Наследованиенаследование позволяет создавать новый класс на базе другого. Класс, на базе которого

на базе которого создается новый класс, называется базовым, а

базирующийся новый класс – наследником или производным классом.

Слайд 3 Объявление наследника
модификаторы class имя_производного_класса
: имя_базового_класса
{операторы_тела_производного_класса}


Конструкция :имя_базового_класса в стандарте

Объявление наследникамодификаторы class имя_производного_класса: имя_базового_класса{операторы_тела_производного_класса}Конструкция :имя_базового_класса в стандарте C# называется спецификацией базы класса.

C# называется спецификацией базы класса.


Слайд 4 Модификаторы доступа
Члены базового класса, имеющие статус доступа private,

Модификаторы доступаЧлены базового класса, имеющие статус доступа private, как были недоступны

как были недоступны для производного класса.
Члены базового класса,

имеющие модификатор public, открыты для членов и объектов производного класса.
Члены базового класса, имеющие статус доступа protected доступны (открыты) для членов производного класса, но в то же время были закрыты (недоступны) для объектов производного класса

Слайд 5 Модификаторы доступа
В производном классе обычно вводятся новые члены,

Модификаторы доступаВ производном классе обычно вводятся новые члены, определяющие новое поведение

определяющие новое поведение и дополнительные характеристики объектов производного класса.

Для новых (не унаследованных) членов производных классов имена выбираются произвольно.
Если в производном классе объявлен член, имя которого совпадает с именем какого-либо члена базового класса, то для их различения в производном классе используются уточненные
имена:
this.имя_члена_производного_класса
base.имя_члена_базового_класса

Слайд 6 this. и base.
class Disk // Класс круг

this. и base.class Disk // Класс круг {  protected double

{
protected double rad; // Радиус

круга
protected Disk(double ri) { rad = ri; } // Конструктор
protected double Area { get { return rad * rad * Math.PI; } }
}

class Ring : Disk // Класс кольцо
{
new double rad; // Радиус внутренней окружности
public Ring(double Ri, double ri): base(Ri) { rad = ri; } // Конструктор
public new double Area { get { return base.Area - Math.PI * rad * rad; } }

public void print()
{
Console.WriteLine("Ring: Max_radius={0:f2}, " + "Min_radius={1:f2}," + «
Area={2:f3}", base.rad, rad, Area);
}
}

Слайд 7 this. и base.
class Program
{

this. и base. class Program {  static void Main(string[] args)

static void Main(string[] args)

{
Ring rim = new Ring(10.0, 4.0);
rim.print();
}
}

Слайд 8 Конструкторы при наследовании
Конструкторы не наследуются.
Конструктор базового класса

Конструкторы при наследованииКонструкторы не наследуются. Конструктор базового класса необходимо явно вызвать

необходимо явно вызвать из инициализатора конструктора производного класса.
При

отсутствии вызова компилятор по умолчанию дополнит объявление конструктора обращением к конструктору базового класса без параметров.

Слайд 9 Одноименные методы базового и производного классов
1. для методов

Одноименные методы базового и производного классов1. для методов возможна перегрузка (overload).

возможна перегрузка (overload). Одноименные методы базового и производного классов

должны иметь разные спецификации параметров.
2. Переопределение (экранирование или сокрытие (hiding)), методом производного класса одноименного метода базового класса (спецификации параметров совпадают). Для избегания используется модификатор new.
3. метод базового класса может быть объявлен как виртуальный (virtual), при его переопределении (overriding) в производных классах обеспечивается полиморфизм.

Слайд 10 Переопределение метода
class Figure // Базовый класс

Переопределение метода class Figure // Базовый класс  {

{
protected

double dx, dy; // Размеры вдоль осей
public void print()
{Console.WriteLine("Габариты: dx={0:f2}, dy={1:f2}", dx, dy); }
}
class Rectangle : Figure//Производный класс – прямоугольник:
{
public Rectangle(double xi, double yi)
{ dx = xi; dy = yi; }
public new void print()
{ Console.Write("Прямоугольник. \t"); base.print(); }
}
class Triangle : Figure//Производный класс – треугольник:
{
public Triangle(double xi, double yi)
{ dx = xi; dy = yi; }
public new void print()
{ Console.Write("Треугольник. \t");base.print(); }
}

Слайд 11 Переопределение метода
static void Main(string[] args)

Переопределение метода static void Main(string[] args)  {

{

Rectangle rec = new Rectangle(3.0, 4.0);
rec.print();
Triangle tre = new Triangle(5.0, 4.0);
tre.print();
Figure fig = new Figure();
fig.print();
Console.ReadLine();

}

Слайд 12 Переопределение метода
static void Main(string[] args)

Переопределение методаstatic void Main(string[] args)  {   Figure fig1

{
Figure fig1 =

new Rectangle(3.0, 4.0);
Figure fig2 = new Triangle(5.0, 4.0);
Figure fig3 = new Figure();
fig1.print();
fig2.print();
fig3.print();
}

Слайд 13 Виртуальные методы
public virtual void print(); для базового

Виртуальные методы public virtual void print(); для базового классаpublic override void print(); для производных классов

класса
public override void print(); для производных классов


Слайд 14 Виртуальные методы и полиморфизм
public virtual void print();

Виртуальные методы и полиморфизм public virtual void print(); для базового классаpublic

для базового класса
public override void print(); для производных классов

Виртуальный

метод – это метод, который может быть переопределен в классе наследнике.


Слайд 15 Абстрактные методы и классы. Особенности
Абстрактный метод может быть

Абстрактные методы и классы. ОсобенностиАбстрактный метод может быть объявлен только в

объявлен только в абстрактном классе.
В заголовке абстрактного метода

указывается модификатор abstract.
У абстрактного метода после скобки, ограничивающей спецификацию параметров, помещается символ ; и не тела.
Абстрактный метод по умолчанию является виртуальным (добавлять модификатор virtual не требуется)
Для того чтобы класс был определен как абстрактный, в его заголовок помещают модификатор abstract.
Создавать объекты абстрактных классов невозможно.
Если в абстрактном классе объявлены несколько абстрактных методов, а производный класс содержит реализацию не всех из них, то производный класс в свою очередь становится абстрактным.
В абстрактном классе могут быть определены любые не абстрактные члены (методы, поля, свойства и т.д.)

Слайд 16 Абстрактные методы и классы. Особенности
Абстрактный метод может быть

Абстрактные методы и классы. ОсобенностиАбстрактный метод может быть объявлен только в

объявлен только в абстрактном классе.
В заголовке абстрактного метода

указывается модификатор abstract.
У абстрактного метода после скобки, ограничивающей спецификацию параметров, помещается символ ; и не тела.
Абстрактный метод по умолчанию является виртуальным (добавлять модификатор virtual не требуется)
Для того чтобы класс был определен как абстрактный, в его заголовок помещают модификатор abstract.
Создавать объекты абстрактных классов невозможно.
Если в абстрактном классе объявлены несколько абстрактных методов, а производный класс содержит реализацию не всех из них, то производный класс в свою очередь становится абстрактным.
В абстрактном классе могут быть определены любые не абстрактные члены (методы, поля, свойства и т.д.)

Слайд 17 Абстрактные методы и классы.
abstract class Figure // Абстрактный

Абстрактные методы и классы.abstract class Figure // Абстрактный базовый класс {

базовый класс
{
protected double

dx, dy; // Размеры
public abstract void print();
abstract public double square();
}

Слайд 18 Абстрактные методы и классы.
class Rectangle : Figure

Абстрактные методы и классы. class Rectangle : Figure {  public

{
public Rectangle(double xi, double

yi)
{ dx = xi; dy = yi; }
public override void print()
{
Console.Write("Площадь прямоугольника={0:f2}. \t",square());
Console.WriteLine("Габариты: dx={0:f2}, dy={1:f2}", dx, dy);
}
public override double square() { return dx * dy; }
}

class Triangle : Figure
{
public Triangle(double xi, double yi)
{ dx = xi; dy = yi; }
public override void print()
{
Console.Write("Площадь треугольника={0:f2}. \t", square());
Console.WriteLine("Габариты: dx={0:f2}, dy={1:f2}", dx, dy);
}
public override double square() { return dx * dy / 2; }
}

  • Имя файла: osnovy-s-nasledovanie-klassov-abstraktnye-metody-i-polimorfizm-lektsiya-81.pptx
  • Количество просмотров: 114
  • Количество скачиваний: 0