Public Employee(string fullName) :



                   this (fullName, 3333, 0.0F, "") {}

Public Employee(string fullName, int em) :

                this (fullName, em, 0.0F, "") {}

}

 

Public class Manager : Employee

 {

private ulong numberOfOptions;

// Конструкторы:

    public Manager(){}

 

    public Manager(string FullName, int empID,

Float currPay, string ssn, ulong numbOfOpts)

Base (FullName, empID, currPay, ssn)

    { код }

}

                             

 

Закрытые члены класса (объявленные как private) могут быть доступны только из того объекта, в котором они явно определены. Предусмотрен еще один модификатор области видимости: protected: (защищенное). При создании защищенных переменных или защищенных методов класса эти члены будут доступны напрямую как из собственного класса, так и из всех производных классов.

 

В иерархии классов конструкторы вызываются в порядке выведения классов, т.е. начиная с конструктора базового класса и заканчивая конструктором производного класса. Более того, этот порядок не нарушается, независимо от использования ссылки base. Если ссылка base не используется, будут выполнены конструкторы по умолчанию (т.е. конструкторы без параметров) всех базовых классов.

 

==================================================

Пример. Э.Троелсен, C# и платформа .NET, стр. 159.

//Файл Employee.cs

using System;

 

namespace Example1

{   

Abstract public class Employee

{       

    protected string fullName;

    protected int empID;

    protected float currPay;

    protected string ssn;      

 

    public virtual void GiveBonus(float amount)

    {

         currPay += amount;

    }

 

    // Accessor и mutator для FirstName.

    public string GetFullName() { return fullName; }

    public void SetFullName(string n)

    {            

         fullName = n;

    }

 

    // Свойство для  empID

    public int EmpID

    {

         get {return empID;}

         set

         {                 

              if (empID != value)

                   empID = value;

         }

    }

    

    // Свойство для currPay:

    public float Pay

    {

         get {return currPay;}

         set

         {

              if (currPay != value)

                   currPay = value;

         }

    }

 

    // Другие свойства

    public string SSN

    {

         get { return ssn; }

         set { ssn = value;}

    }       

 

    // Конструктор по умолчанию:

    public Employee (){}

 

    // Конструктор

    public Employee(string FullName, int empID, float currPay, string ssn)

    {

         Console.WriteLine("Конструктор по умолчанию!");

             

         this.fullName = FullName;

         this.empID = empID;

         this.currPay = currPay;

         this.ssn = ssn;

    }

 

    static Employee() // Статический конструктор

    {

         CompName = "Intertech, Inc";

    }

public Employee(string fullName) : this(fullName, 3333, 0.0F, "") {}

   public Employee(string fullName, int em) : this(fullName, em, 0.0F, "") {}

public virtual void DisplayStats()

    {

         Console.WriteLine("Имя: {0}", fullName);

         Console.WriteLine("Зарплата: {0}", currPay);

         Console.WriteLine("ID: {0}", empID);

         Console.WriteLine("SSN: {0}", ssn);

    }

 

    // A static property.

    private static string CompName;

    public static string Company

    {

         get { return CompName; }

         set { CompName = value;}

    }

    //p.150,157

    public readonly string SSNField = "111-11-1111";

}

}

//Файл Manager.cs

using System;

 

namespace Example1

{   

Public class Manager : Employee

{

    private ulong numberOfOptions;

    public ulong NumbOpts

    {

         get {return numberOfOptions;}

         set

         {

              if (numberOfOptions!= value)

              numberOfOptions = value;

         }

    }

// Конструкторы:

    public Manager(){}

 

    public Manager(string FullName, int empID,

Float currPay, string ssn, ulong numbOfOpts)

Base(FullName, empID, currPay, ssn)

    {

         Console.WriteLine("Manager ctor!");

         // This point of data belongs with us!

         numberOfOptions = numbOfOpts;        

    }

 

    public override void GiveBonus(float amount)

    {

         base.GiveBonus(amount);

         ...

         Random r = new Random();

         numberOfOptions += (ulong)r.Next(500);

    }

 

    public override void DisplayStats()

    {

         base.DisplayStats();

         Console.WriteLine("Число задач: " + numberOfOptions);

    }

 

}

}

 

//Файл SalesEmp.cs

using System;

 

namespace Example1

{

Public class SalesPerson : Employee

{

     protected int numberOfSales;

// Конструкторы:

     public SalesPerson() {}

Public SalesPerson(string FullName, int empID,


Дата добавления: 2020-04-08; просмотров: 116; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!