C# - Головна Простір імен
► System (5)► Microsoft (1) Для учнів (початківців)
► Відео уроки (4)► Навчання (177) ► Приклади програм (19) ► Секрети Сі Шарп (4) Для професіоналів
► Навчання (6)► Приклади програм (1) |
Абстрактні класи C#Методи класу можуть бути оголошені як абстрактні. Це означає, що в цьому класі немає реалізації цих методів. Абстрактні методи пишуться з модифікатором abstract. Клас, в якому є хоча б один абстрактний метод, називається абстрактним (в такому класі можуть бути і звичайні методи). Не можна створювати екземпляри абстрактного класу — такий клас може використовуватися тільки в якості базового класу для інших класів. Для нащадка такого класу є дві можливості — або він реалізує всі абстрактні методи базового класу (і в цьому випадку для такого класу-нащадка ми зможемо створювати екземпляри), або реалізує не всі абстрактні методи базового класу (у цьому разі він є теж абстрактним класом, і єдина можливість його використання — це виробляти від нього класи нащадки). Ось приклад, що ілюструє використання абстрактних класи: using System; namespace test { abstract class Figure { //Площа фігури public abstract double square(); public abstract double perimeter(); } class Triangle: Figure 108 Розділ I I . Фундаментальні поняття double а, Ь, с; //Сторони //Конструктор public Triangle (double a, double b, double с) { this.a=a; this .b=-b; this.c=c; I public override double square() { //Використовуємо формулу Герока double p - (aib+c)/2; return Math.Sqrt(p*(p-a)* (p-b)* (p-c)); I public override double perimeter() i return a-ib+c; class Rectangle: Figure { double a, b; //Сторони //Конструктор public Rectangle(double a, double b) { this.a=a; this.b=b; } public override double squared { return a*b; } public override double perimeter!) ! return (afb)*2; } } class Test { public static void Main() t Figure fl, f2; fl=new Triangle(3, 4, 5); f2=new Rectangle(2, 6); System.Console.WriteLine(f1.perimeter()i", "+ f1.square() System.Console . WriteLine (f 2 .perimeter ()•+", "+ f 2 . square () Результати роботи програми відображаються як: 12, 6 16, 12 Тут ми оголошуємо абстрактний клас Figure, від якого проводимо два класу — Rectangle (клас прямокутника) і Triangle (трикутника). У класі Figure є два абстрактних методу — square (для підрахунку площі) і perimeter (для периметра). Так як для довільної фігури формули для площі і для периметра не існує, то ці методи оголошені в класі Figure і перевизначені в похідних класах (з ключовим словом override). Далі в класі Test ми проводимо випробування — заводимо дві змінні посилального типу базового класу Figure, нижче у ці посилання ми записуємо створені примірники похідних класів Triangle і Rectangle. Зверніть увагу, що посилання на абстрактний клас ми можемо створити, а примірник — ні. Далі ми виводимо на екран периметр і площу для наших фігур. Переглядів: 4924 |