在程序中允许基于已有的类创建新的类并拥有已有类的成员和行为(私有成员除外)这种特性C# 称为继承。被继承的类称为基类(父类或超类)新创建的类为派生类(子类)
C# 继承关系语法是通过英文状态的冒号(:)来表示如
class 基类名{//基类成员}class 派生类名:基类名{//派生类成员}因为继承和拥有的意思很贴近,可以理解为:派生类的成员>=基类成员。
继承的规则和特点:
需要注意的是,C# 是单继承特点即一个类只能直接继承一个基类,但是一个类可以继承多个接口实现多继承。C# 的继承具有传递性,如果A类继承B类,B类继承C类,那A类也会继承(拥有)C类的成员。派生类不能继承基类标记的私有(private)成员,基类定义的protected、internal、public 的成员是可以被访问的。对于构造函数,派生类不能直接使用基类的构造函数,但是可以通过base关键字调用基类的构造函数。
如果基类使用virtual关键字定义的方法(虚方法)派生类可以使用override关键字进行方法重写。继承的特性在程序中做到代码复用,避免了重复编写相同的代码逻辑。派生类继承基类后还可以在基类成员的基础上进行添加新的成员和行为实现扩展性。使用继承程序设计的灵活度也提升,可以通过基类引用调用派生类方法。
using System;namespace A_DemoJob{internal class Program{static void Main(string[] args){//通过基类引用调用派生类方Animal cat = new Cat("Cat");cat.ShowName();cat.Sleap();Dog dog = new Dog("Dog");dog.ShowName();dog.Sleap();}}//动物类public class Animal{public string Name { get; set; }public Animal(string name){this.Name = name;}public Animal(){}public void ShowName(){Console.WriteLine($"Hello! I am a {this.Name}.");}public virtual void Sleap(){Console.WriteLine($"{this.Name} is Sleeping.");}}//小猫类 继承动物类public class Cat : Animal{//显示调用基类的构造函数public Cat(string name) : base(name){}//重写基类 Sleap方法public override void Sleap(){//调用基类Sleap方法 或者添加其他逻辑base.Sleap();}}//小狗类 继承动物类public class Dog : Animal{public Dog(string name) : base(name){}//重写基类 Sleap方法public override void Sleap(){//调用基类Sleap方法 或者添加其他逻辑//base.Sleap(name);Console.WriteLine($"{base.Name} Sleeping..");}//使用new关键字隐藏基类方法public new void ShowName(){//调用基类的ShowName方法// base.ShowName();Console.WriteLine($"Hello! I am a {base.Name},I can Play with you.");}}}输出:
Hello! I am a Cat.Cat is Sleeping.Hello! I am a Dog,I can Play with you.Dog Sleeping..
评论 (0)