![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лаба №3. Принцип подстановки.
![]()
![]()
![]()
![]()
![]()
Текст программы: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace lab3 { public class A { public A() { //Console.WriteLine("Constructor A"); this.varA = 5; } ~A() { }
public virtual int F() { Console.WriteLine("Func class A"); return this.varA + 30; }
protected int varA { get; set; } //атрибут доступа }
public class B: A { public B() { //Console.WriteLine("Constructor B"); this.varA = 10; this.varB = 100; } ~B() { } //расширяю функцию F, наследуемую классом B из класса А public override int F() { Console.WriteLine("Func of class B"); return this.varA + 40; }
public virtual int F1() { Console.WriteLine("Func of class B"); return varB + 200; }
protected int varB { get; set; }
}
public class C: A { public C() { Console.WriteLine("Constructor C"); this.varA = 15; this.varC = 2; } ~C() { } //расширяю функцию F, наследуемую классом C из класса А public override int F() { Console.WriteLine("Func of class C"); return this.varA + 30; }
public virtual int F2() { Console.WriteLine("Func of class C"); return (this.varC * this.varA); }
protected int varC { get; set; } }
public class J: C { public J() { Console.WriteLine("Constructor J"); this.varC = 7; this.varJ = 17; } ~J() { } //расширяю функцию F2, наследуемую классом J из класса C public override int F2() { Console.WriteLine("Func of class J"); return this.varC + 50; }
public virtual int F3() { Console.WriteLine("Func of class J"); return (this.varC * this.varJ * 2); }
protected int varJ { get; set; } }
class D: B { public D() { Console.WriteLine("Constructor D"); } ~D() { } public override int F1() { Console.WriteLine("Func of class D"); return this.varB + 100; } public override int F() { return this.varA; } }
class E: C { public E() { //Console.WriteLine("Constructor B"); } ~E() { } public override int F2() { Console.WriteLine("Func of class E"); return (this.varC * this.varA * 2);
} }
public class K: J { public K() { //Console.WriteLine("Constructor K"); } ~K() { } public override int F3() { Console.WriteLine("Func of class K"); return this.varA * this.varJ * this.varC * 6; } } class Program { static void Main(string[] args) { Console.WriteLine("Подстановка и расширение функции F класса А:"); A a1 = new A(); Console.WriteLine("a1.F() = {0}", a1.F()); //подстановка.я в класс B подставляю объект класса А. вызовется a1 = new B(); Console.WriteLine("a1.F() = {0}", a1.F()); //подстановка. a1 = new C(); Console.WriteLine("a1.F() = {0}", a1.F()); Console.WriteLine();
Console.WriteLine("проверка, является ли a1 объектом класса С:"); //проверка, явл-ся ли a1 объектом класса C //какой объект в этой ссылке if (a1 is C) { Console.WriteLine(" a1 объект класса C"); } else Console.WriteLine("а1 не является объектом класса C"); Console.WriteLine(); //блок, который потом удалится { C c = new C(); //локальный объект int k = c.F(); Console.WriteLine(k); }
Console.WriteLine("Расширение функции F1 класса B:"); B b1 = new B(); Console.WriteLine("b1.F1() = {0}", b1.F1()); //подстановка объекта b1 в класс D b1 = new D(); Console.WriteLine("b1.F1() = {0}", b1.F1()); Console.WriteLine(); Console.WriteLine();
//вызов функции F из класса A в классе D Console.WriteLine("b1.F() = {0}", b1.F()); Console.WriteLine("Расширение функции F2 класса C:"); C c1 = new C(); Console.WriteLine("c1.F2() = {0}", c1.F2()); c1 = new J(); Console.WriteLine("проверка, является ли c1 объектом класса J:"); //проверка, явл-ся ли c1 объектом класса J //какой объект в этой ссылке if (c1 is J) { Console.WriteLine(" c1 объект класса J"); } else Console.WriteLine("c1 не является объектом класса J"); Console.WriteLine(); //блок, который потом удалится { J j = new J(); //локальный объект int p = j.F2(); Console.WriteLine(p); }
//подстановка объекта c1 в класс E c1 = new E(); Console.WriteLine("c1.F2() = {0}", c1.F2());
Console.WriteLine("Расширение функции F3 класса J:");
J j1 = new J(); Console.WriteLine("j1.F1() = {0}", j1.F3()); //подстановка объекта j1 в класс K j1 = new K(); Console.WriteLine("j1.F3() = {0}", j1.F3());
Console.ReadKey(); } } }
Результат работы программы:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2021-07-18; просмотров: 137; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.216.145.175 (0.055 с.) |