C#学习笔记7:多态是面向对象的三大特征,封装、继承、多态之一

多态:

多态是面向对象的三大特征(封装、继承、多态)之一。

什么是多态?

一个对象表现出多种状态。

多态的实现方法:

1、虚方法;

2、抽象方法;

3、接口。

PS:New 关键词可以隐藏父类的方法。

实现多态的三中途径:

1、虚方法:在父类方法中标记virtual,virtual 放在 访问修饰符后面,子方法加 override,override放在访问修饰符后面。

2、抽象类(不能被实例化):要抽象的类的访问修饰符后面和关键词class前加“abstract”,类里面的方法的访问修饰符后面,方法返回类型前面加“abstract”

抽象类的使用语法举例:

Public abstract class Person

{

Public abstract void Eat();

Public abstract void Speak();

}

抽象类的特点:

如果一个子类继承了一个抽象类的父类,那么这个子类必须实现这个父类中的所有抽象成员,除非这个子类也是抽象的。

3、接口

关键词:interface

接口中不能有字段,只有方法,而且方法不能有方法体。并且成员没有访问修饰符,但是默认的访问权限是public。(ps:类成员前如果不加访问修饰符,默认的是private)

接口的理解:接口侧重于一种能力。

接口的注意点:

如果一个类继承一个接口,那么必须实现这个接口所有成员。一个接口尽量只写一个方法,避免感染。

接口能继承一个或者多个接口。但是接口不能继承一个或者多个类!类能继承一个或者多个接口(准确的说是类能实现一个或者多个接口)

显示实现接口:void 接口名.方法名(默认的访问修饰符是private)

显示实现接口的目的 就是为了解决重名问题。

如果一个类继承了一个父类和一个接口或者多个接口,父类需要放在第一位。

接口的调用:

接口名 接口对象=new 子类对象();

接口对象.方法();

思考问题:

什么时候用虚方法和抽象类?

1、当父类有必须实现并且必须要实例化的时候,用虚方法!

2、当父类不需要方法实现,不需要实例化的时候,就用抽象类。

什么时候使用接口?

1、需要多次继承

2、当某些类具有一种或者多种相同的功能,但是却不能把这些类提取出一个父类,这时候把这些功能写成一个接口。

(除非注明,文章均为原创,欢迎转载,转载时请注明出处链接:智波生活 C#菜鸟笔记