说抽象方法 前先说抽象类
抽象类 在类被创建的时候,派生类的构造函数在执行前,会首先执行基类的构造函数 基类往往是不完善的,也不应该把基类的类成员实例化 : 例如: person (人类):Animal(动物), 不应该直接从 Animal(动物)类创建对象 抽象类的作用:阻止基类的直接实例化
抽象方法 :抽象类中的所有方法不一定全是抽象方法,但是包含抽象方法的类被称作抽象类,即抽象方法一定是在抽象类中的
抽象方法 没有方法体,即方法没有 具体实现
同样 不允许包含 { }
例如:
public abstract class Animal //编写类
{
public abstract string Sound(); //创建抽象方法
}
抽象方法的 实现 必须 让派生类实
在派生类中,必须实现基类中的抽象方法
在派生类中,必须使用override 关键字,来实现抽象的方法
来表示此方法 是对基类的抽象方法的实现
public class People:Animal //派生自Animal 类
{
public string country;
public override string Sound() //实现抽象方法
{
return "language"; //返回值
}
}
在类设计中,对于多数的派生类使用的方法,可以考虑将方法放置在基类中,当一个方法, 例如飞行,有一些派生类不需要使用,如人类,则可以将此方法设置为虚方法。而当一个方法,例如吃 东西,是每个派生类都必须使用的,则最好将此方法设计为抽象方法,强制每个开发人员必须实现该方
虚方法: 为什么要有虚方法: 使用abstract 关键字修饰类为抽象类,那么在基类中就不需要实现抽象类,而必须在派生类中实现基类的方法。但是,如果在基类中,有多个方法来形容一个动物的特性,如飞行的 特性可以用来形容鸟,而世界上很多动物都会飞行,但是人类是无法飞行的,所以在人类这个派生类中实现飞行的方法是没有必要,也是降低的代码的可读性的。
语法: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"; //返回值 } } 上述代码中,人类不能飞行,所以没有必要实现Fly()方法,而鸟儿可以飞行,为了更好的描述一个对象,可以实现Fly()方法让对象能够飞行。 |