Наследование 1

Слайд 2

4) class MyClass: Object // наследуется от System.Object { // и

4)
class MyClass: Object // наследуется от System.Object
{
// и т.д.
}
class

MyClass // наследуется от System.Object
{
// и т.д.
}
5)
class MyClass: object // наследуется от System.Object
{
// и т.д.
}
Слайд 3

6) class MyBaseClass { public virtual string VirtualMethod() { return "Это

6)
class MyBaseClass
{
public virtual string VirtualMethod()
{
return "Это

- виртуальный метод, определенный в MyBaseClass";
}
}
7)
public virtual string ForeName
{
get { return foreName; }
set { foreName = value; }
}
private string foreName;
Слайд 4

8) class MyDerivedClass: MyBaseClass { public override string VirtualMethod () {

8)
class MyDerivedClass: MyBaseClass
{
public override string VirtualMethod ()
{

return "Этот переопределенный метод объявлен в MyDerivedClass";
}
}
9)
class HisBaseClass
{
// разнообразные члены
}
Слайд 5

10) class MyDerivedClass: HisBaseClass { public int MyGroovyMethod() { // некая

10)
class MyDerivedClass: HisBaseClass
{
public int MyGroovyMethod()
{
//

некая превосходная реализация
return 0;
}
}
11)
class MyDerivedClass: HisBaseClass
{
public new int MyGroovyMethod()
{
// некая превосходная реализация
return 0;
}
}
Слайд 6

12) class CustomerAccount { public virtual decimal CalculatePrice () { //

12)
class CustomerAccount
{
public virtual decimal CalculatePrice ()
{
//

реализация
return 0.0M;
}
}
class GoldAccount: CustomerAccount
{
public override decimal CalculatePrice()
{
return base.CalculatePrice() * 0.9M;
}
}
Слайд 7

13) abstract class Building { public abstract decimal CalculateHeatingCost(); //абстрактный метод

13)
abstract class Building
{
public abstract decimal CalculateHeatingCost(); //абстрактный метод
}
14)
sealed class FinalClass


{
// и т.д. ,
)
class DerivedClass: FinalClass //Неверно.Ошибка компиляции.
{
// и т.д.
}
Слайд 8

15) class MyClass: MyClassBase { public sealed override void FinalMethod ()

15)
class MyClass: MyClassBase
{
public sealed override void FinalMethod ()
{

// и т.д.
}
}
class DerivedClass: MyClass
{
public override void FinalMethod() //Неверно. Ошибка компиляции.
{
}
}
16)
abstract class GenericCustomer
{
private string name; // прочие методы
}
Слайд 9

class Nevermore60Customer: GenericCustomer { private uint highCostMinutesUsed; // прочие методы }

class Nevermore60Customer: GenericCustomer
{
private uint highCostMinutesUsed;
// прочие методы
}
17)

GenericCustomer customer = new Nevermore60Customer();
18)
public abstract class GenericCustomer
{
private string name;
public GenericCustomer()
:based //эту строку можно пропустить без влияния
//на скомпилированный код
{
name = "";
}
}
Слайд 10

19) public GenericCustomer() { name = " "; } 20) private

19)
public GenericCustomer()
{
name = "";
}
20)
private GenericCustomer()
{
name

= "";
}
21)
‘Wrox.ProCSharp.GenericCustomer.GenericCustomer()’ is inaccessible due to its protection level
'Wrox.ProCSharp.GenericCustomer.GenericCustomer()' не доступен из-за его уровня защиты