2009
Származtatás:
using System;
namespace Program
{
class Car
{
public readonly int maxSpeed;
private int currSpeed;
public Car(int max)
{
maxSpeed = max;
}
public Car()
{
maxSpeed = 55;
}
public int Speed
{
get { return currSpeed; }
set
{
currSpeed += value;
if (currSpeed > maxSpeed)
{
currSpeed = maxSpeed;
}
}
}
}
class Minivan : Car
{
}
class MainClass
{
public static void Main()
{
Car myCar = new Car(292);
myCar.Speed = 300;
Console.WriteLine("My car is going {0} KMH", myCar.Speed);
Minivan myVan = new Minivan();
myVan.Speed = 50;
Console.WriteLine("Minivan speed is {0} KMH", myVan.Speed);
Console.ReadKey();
}
}
}Ebben a példában látható, hogy a Minivan származtatott osztály hozzáfér az ősosztály minden tagjához, így neki is beállíthatjuk a sebességét…
Egészítsük ki még az alábbi kódot, egy rádió (lezárt) osztállyal, ami azt mutatja meg, hogy be van-e kapcsolva a rádió:
using System;
namespace Program
{
sealed class Radio
{
public void Power(bool turnOn)
{
Console.WriteLine("Radio on: {0}", turnOn);
}
}
class Car
{
public readonly int maxSpeed;
private int currSpeed;
private Radio myRadio = new Radio();
public void TurnOnRadio(bool onOff)
{
//Hívás továbbítása a belső objektumnak
myRadio.Power(onOff);
}
public Car(int max)
{
maxSpeed = max;
}
public Car()
{
maxSpeed = 55;
}
public int Speed
{
get { return currSpeed; }
set
{
currSpeed += value;
if (currSpeed > maxSpeed)
{
currSpeed = maxSpeed;
}
}
}
}
class Minivan : Car
{
}
class MainClass
{
public static void Main()
{
Car myCar = new Car(292);
myCar.Speed = 300;
myCar.TurnOnRadio(true);
Console.WriteLine("My car is going {0} KMH", myCar.Speed);
Minivan myVan = new Minivan();
myVan.Speed = 50;
myVan.TurnOnRadio(false);
Console.WriteLine("Minivan speed is {0} KMH", myVan.Speed);
Console.ReadKey();
}
}
}Egy komplett kód, ami bemutatja a base kulcsszó használatát és a származtatás lényegét:
using System;
namespace Car
{
class Auto
{
protected int currSpeed, currManeuverability, currBreak;
protected string currBrand;
public Auto() { }
public Auto(int speed, int Maneuverability, int Break, string Brand)
{
currSpeed = speed;
if (Maneuverability > 100)
{
currManeuverability = 100;
}
else
currManeuverability = Maneuverability;
currBreak = Break;
currBrand = Brand;
}
public virtual void DisplayInfo()
{
Console.WriteLine("\nAz auto markaja: {0}", currBrand);
Console.WriteLine("Az auto sebessege: {0}km/h", currSpeed);
Console.WriteLine("Az auto iranyithatosaga (max100): {0}", currManeuverability);
Console.WriteLine("Az auto fekezese 100km/h-rol: {0} masodperc", currBreak);
}
}
class SportAuto : Auto
{
private int currSpeedAfterNitro;
public SportAuto() { }
public SportAuto(int speed, int Maneuverability, int Break, string Brand, int nitro)
: base(speed, Maneuverability, Break, Brand)
{
currSpeedAfterNitro = speed + nitro;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine("Az auto sebessege nitro kozben: {0}km/h\n", currSpeedAfterNitro);
}
}
class LuxusAuto : Auto
{
private int currBreakAfterABSon;
public LuxusAuto() { }
public LuxusAuto(int speed, int Maneuverability, int Break, string Brand, int ABSslow)
: base(speed, Maneuverability, Break, Brand)
{
currBreakAfterABSon = Break - ABSslow;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine("Az auto fekezese 100km/h-rol ABS bekapcsolasa utan: {0} masodperc\n", currBreakAfterABSon);
}
}
class MainClass
{
public static void Main()
{
Auto szuzuki = new Auto(180, 12, 36, "Szuzuki");
szuzuki.DisplayInfo();
Auto skoda = new Auto(198, 10, 45, "Skoda");
skoda.DisplayInfo();
Auto other_data = new Auto();
SportAuto ferrari = new SportAuto(320, 88, 7, "Ferrari", 40);
ferrari.DisplayInfo();
LuxusAuto mercedes = new LuxusAuto(280, 79, 8, "Mercedes", 3);
mercedes.DisplayInfo();
Console.ReadKey();
}
}
}Van még egy lehetőség az öröklésre… A “van egy” lehetőség: (tartalmazás és delegálás)
using System;
namespace program
{
class BenfitPackage
{
public double ComputePayDeDuction()
{
return 1225.0;
}
}
partial class Employee
{
protected BenfitPackage empBenfits = new BenfitPackage();
public double GetBenfitCost()
{ return empBenfits.ComputePayDeDuction(); }
public BenfitPackage Benfits
{
get { return empBenfits; }
set { empBenfits = value; }
}
protected int currage;
public Employee(int age)
{ currage = age; }
public virtual void DisplyInfo()
{
Console.WriteLine("The employee age: {0}\n", currage);
}
}
class Managar : Employee
{
private int Mtime;
public Managar(int age, int ManagerTime)
: base(age)
{ Mtime = ManagerTime; }
public override void DisplyInfo()
{
Console.WriteLine("The Maneger age: {0}", currage);
Console.WriteLine("He deal with Manager: {0}\n", Mtime);
}
}
class SalesPerson : Employee
{
private string SellThings;
public SalesPerson(int age, string sell)
: base(age)
{ SellThings = sell; }
public override void DisplyInfo()
{
Console.WriteLine("The Sales person age: {0}",currage);
Console.WriteLine("He sell: {0}\n",SellThings);
}
}
sealed class PTSalesPerson : SalesPerson
{
public PTSalesPerson(int age, string sell)
: base(age, sell)
{}
}
class MainClass
{
public static void Main()
{
Employee Norbert = new Employee(26);
Norbert.DisplyInfo();
Managar Karoly = new Managar(36, 14);
Karoly.DisplyInfo();
SalesPerson Jones = new SalesPerson(46, "Bike");
Jones.DisplyInfo();
double cost = Jones.GetBenfitCost();
Console.WriteLine("cost: {0}", cost);
Console.ReadKey();
}
}
}
