多态:就是把派生类对象当成基类对象来使用。换句话说,就是认为派生类对象是(is a)一种基类对象。把派生类对象当做基类来使用,就是多态技术的核心。
多态的实现方式:
-
虚方法(virtual)
-
抽象方法(abstruct)
-
接口(interface)
抽象方法:是指在基类的定义中,不包含任何实现代码的方法,实际就是一个不具有任何具体功能的方法。这样的方法唯一的作用就是让派生类重写。(只要在类中包含一个抽象方法,该类就是抽象类)
重载抽象方法:抽象类中的抽象方法和抽象属性都没有提供实现,当定义抽象类的派生类时,派生类必须重载基类的抽象方法和抽象属性(如果派生类没有进行重载,则派生类也必须声明为抽象类,即在类定义前加abstract)
======对于基类的虚方法,其派生类可以不重载
======重载抽象类的方法和属性必须使用override关键字
public abstract class Shape{
public virtual double Area(){//对于基类的虚方法,其派生类可以不重载。
return 0;
}
public virtual string Name{//重载抽象类的方法和属性必须使用override关键字
set;
get;
}
}
接口:是C#的一种数据类型,属于引用类型。接口主要用来定义一个规则,让企业内部或行业内的软件开发人员按标准去实现应用程序的功能。(接口可以继承多个接口,一个类只能继承一个类,却同时可继承多个接口)
public interface iPicture{
int delImage();
void showImage();
}
抽象类与接口的对比:
相同点:
- 不能实现实例化
- 包含未实现的方法
- 派生类必须实现未实现的方法
不同点:
- 抽象类:用abstract定义,只能继承一个类,非抽象派生类必须实现抽象方法,需要iverride实现抽象方法。
- 接口:用interface定义,可以实现多个接口,实现接口的类必须实现所有成员,直接实现。
真是累死我了··································