继承
在应用程序开发过程中,需要完成功能相近但是实现不同的类来抽象对象的时候,就需要用到继承。
继承优点
提高重用性:派生提高了代码的重用性,不至于在创建一个新对象时再重新写一个新的类。
提高结构性:派生让程序有了结构,在程序开发过程,每一个派生类均继承上一个类的方法,且每个派生类除了可以使用公共的字段以外,可以专门为派生类增加字段和方法而不去影响到其他的派生类
public class Animal //创建基类
{
public string type; //创建基类成员
public string color; //创建基类成员
public string sound; //创建基类成员
}
public class People:Animal //创建派生类
{
public string country; //创建派生类成员
}
注:在子类People中也有type、color、sound这些字段,这就是继承用处之所在。当然也包括方法还有其他…
如果一个类继承了其他的类,那么父类(其他的类)中的构造函数在自己类的构造函数之前执行
如果父类中有多个构造函数那么子类在调用父类构造函数的时候要用到base关键字
Eg:
public People(DateTime time):base(time) //指定构造函数
{
Console.WriteLine("People 被构造"); //编写构造函数
}
那个时间记录的实际上是父类中的,因为父类中的构造函数在子类构造函数之前执行
抽象类(abstract)
public abstract class Animal //创建抽象类
{
public Animal() //创建构造函数
{
Console.WriteLine("Animal 被构造"); //编写构造函数
}
}
用处:就是为了别的类能继承
抽象类不能被实例化
抽象方法
只有抽象类中才有抽象方法
public abstract class Animal //编写类
{
public abstract string Sound(); //创建抽象方法
}
抽象类中值只负责定义这些方法,抽象方法在派生类中必须实现
public class People:Animal //派生自Animal 类
{
public string country;
public override string Sound() //实现抽象方法
{
return "language"; //返回值
}
}
密封类(sealed) 密封类是一种永远不能做基类的
public sealed class Animal //创建密封类
{
public Animal() //创建构造函数
{
Console.WriteLine("Animal 被构造"); //编写构造函数
}
}
覆盖
父类中方法名字和派生类中的名字相同时,派生类中的方法就会覆盖父类中的方法
public class Animal //创建基类
{
public string Sound() //基类中的Sound 方法
{
return "miaomiao"; //返回值
}
}
public class People:Animal //创建派生类
{
public string country; //创建私有成员
public string Sound() //覆盖派生类中的Sound 方法
{
return "language"; //返回值
}
}
虚方法(virtual) :让派生类能够选择是否实现该方法(父类中的)
public class Animal //创建类
{
public virtual string Fly() //虚方法,飞行方法
{
return "Most Of The Animal Can Fly"; //返回值
}
}
public class People:Animal //创建派生类
{
public string country; //没有实现虚方法也可以
}
public class Bird : Animal //创建派生类
{
public string FLY() //鸟儿能飞行,实现一个虚方法
{
return "It Can Fly"; //返回值
}
}
当抽象类中有很多方法时,派生类中必须实现父类中的方法,但是派生类中要实现的父类中的方法有的不符合逻辑,那么这时就要在父类中将那些可能出现不符合逻辑的方法定义成虚方法。定义之后派生类中就不需要实现所以父类中的虚方法,只有有需要的才实现父类中的虚方法
重写
委托和事件
委托:是一种引用方法的类型