C#进阶之路——8.C# 继承
基础:
继承 |
含义:继承指允许重用现有类去创建新类的过程。 |
原则:一个类派生出来的子类具有这个类的所有非私有的属性,即继承的子类拥有父类所有非私有属性。 |
特点:C#不支持多重继承,C#类始终继承自一个基类(如果未在声明中指定一个基类,则继承自System.Object) |
注意:派生类继承基类时用“:”符号连接,派生类继承基类的所有非私有成员变量和方法。 |
using System; public class Person { //这是基类 } public class Student:Person { //这是派生类 } |
进阶:
调用基类的构造函数 |
如果对类没有定义显式构造函数,则编译器将提供默认的构造函数,以初始化这些类的成员字段。 如果显式添加了构造函数,就可以有效控制整个构造过程。 实际开发中建议显式添加构造函数。 |
注意:派生类通过使用:base()语法可以显式调用基类的构造函数。在必要的情况下,可以利用它来初始化字段。 |
using System; namespace Jicheng { //基类 public class Person { public string _name; public uint _age; //基类的构造函数 public Person(string name,uint age) { this._name = name; this._age = age; //打印输出 Console.WriteLine(_name); Console.WriteLine(_age); } } //派生类 public class Student:Person { private uint _id; //派生类构造函数调用基类构造函数用“:base” public Student(string name,uint age uint id):base(name,age) { this._id = id; //打印输出 Console.WriteLine(_id); } } public class Exercise { [STAThread] static void Main(string[] args) { //构造 Student Student objstudent=new Student(“XYZ”,45,001); } } } |
方法重写 |
关键字:override |
具有override关键字修饰符的方法是对基类中同名方法的新实现。 基类中的同名方法必须声明为virtual或abstract类型。 给基类中的方法添加virtual关键字表示可以在派生类中重写它的实现。 |
1、默认的C#方法并非virtual,因此不能重写。 2、基类方法的可访问级别并不因重写它的方法而改变,他们的访问修饰符相同。 3、new、static和virtual关键字不能与override访问修饰符一同使用 |
关键字:virtual |
virtual关键字,用于将方法定义为支持多态,用于对一个类中可修改的方法的声明,这种方法称为虚拟方法,子类可以使用override关键字自由实现它们各自版本的虚拟方法。 |
语法: [访问修饰符] virtual [返回值类型] 方法名称([参数列表]) { //虚拟方法的实现 } |
1、virtual访问修饰符不能与static和override等访问修饰符一同使用 2、调用虚拟方法,在运行时系统会自动检查,以确定调调用了哪一个实现方法。 |
关键字:new |
new访问修饰符用于显式隐藏继承自基类的成员。 如果派生类成员与基类成员名称相同,new会将派生类成员识别为一个全新成员。 |
1、在一个方法中同时使用new和override将会出错。 2、new访问修饰符的真正目的是为了隐藏基类方法。 3、如果将一个方法声明为new,它实际上并没有隐藏基类方法,并且编译器也产生了警告,这时应该删除new。 |
参考: