一
继承是可用传递的 , 子类是对父类的扩展 , 必须继承父类的方法,同时在子类中添加新方法。子类可用调用父类的公用方法和字段 , 而父类不能调用子类的成员。子类不仅继承了父类的共有成员 , 同时也继承了父类的私有成员 , 只是在子类中不能被访问。
二、继承的特性
1.继承的单根性:
一个子类只能有一个父类,就好比一个人只有一个父亲。
2.继承的传递性:
例如, ClassC 派生自 ClassB,并且 ClassB 派生自 ClassA,则 ClassC 会继承在 ClassB 和 ClassA 中声明的成员。
依次顺序可以不断向上取。
三、案例
代码如下:
父类Employee:
using System;
namespace _4._3继承与多态
{
class Employee //雇佣
{
public string name;
public double salary;
public Employee(string name)
{
this.name = name;
}
///计算工资
public virtual void Earnings()
{
//定义虚方法
}
///输出工资
public void Print()
{
Console.WriteLine("姓名:{0}", name);
}
}
}
子类Boss:
using System;
namespace _4._3继承与多态
{
class Boss:Employee
{
public Boss(string name):base(name)
{
}
public override void Earnings()
{
this.salary = 5000;
}
new public void Print()
{
Console.Clear();
base.Print();
Console.WriteLine("职务:老板 工资:{0}\n", salary);
}
}
}
子类CommissionWorker:Employee:
using System;
namespace _4._3继承与多态
{
class CommissionWorker:Employee
{
private int quantity;
public CommissionWorker(string name,int quantity):base(name)
{
this.quantity=quantity;
}
public override void Earnings()
{
this.salary = 5000+quantity*12;
}
new public void Print()
{
base.Print();
Console.WriteLine("职务:销售 工资:{0}\n", salary);
}
}
}
测试类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _4._3继承与多态
{
class Program
{
static void Main(string[] args)
{
Boss boss = new Boss("赵**");
CommissionWorker comm = new CommissionWorker("张**", 1000);
boss.Earnings();
boss.Print();
comm.Earnings();
comm.Print();
Console.ReadKey();
}
}
}