C#进阶之路——8.C# 继承

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。

参考:

https://www.cnblogs.com/LagoOrLY/p/10318214.html

posted @ 2019-09-08 14:34  PaulTsao  阅读(423)  评论(0编辑  收藏  举报