多态—虚方法抽象类接口

Posted 露西&哈特菲利亚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多态—虚方法抽象类接口相关的知识,希望对你有一定的参考价值。

修饰符:
public : 公共的,引用命名空间即可随意访问,访问权限最高;
private : 私有的,只有在声明它的类和结构中才可以访问,访问权限最低;

Internal : 内部的,同一个程序集中所有的类都可以访问,程序集就是命名空间,
访问权限次最高,这个访问修饰符是默认的;
Protected : 受保护的,只能在他自己和自己的子类中才能访问。

--------------------------------------------------------------------------
多态:

有了继承,才有了多态;

多态就是多种形态/状态,比如说,男人和女人,都继承了人,所有的人都有吃饭这个
方法,男人和女人吃饭的方法不一样,继承下来的方法不适合两个子类来用,那么需
要更改方法主体;


多态第一种形态:虚方法,重写 virtual

父类中方法增加:virtual 关键字,使方法变成虚方法,可以被子级重写;
格式:class 类名(此处是父级)
{
public virtual void 方法名()
{
方法主体;
例如:Console.WriteLine();
}
}

子类中重写从父级继承过来的方法:override 关键字,修改方法的主体;
格式:
格式:class 子类名:父类名
{
public override void 方法名() --此处方法名是从父类中继承到的
{
方法主体;
例如:Console.WriteLine();
}
}

 

第二种形态:抽象类 abstract
为什么出来的?因为父类中写了方法的主体,所有子类也会去重写,然后做父类的这个人
就觉得麻烦,既然你们都要重写,那么我就不再给你们写方法的主体了,只规定方法的返
回值,参数,方法名是什么就行了,你们自己继承了重写去;

格式:
父类:abstract class 类名
{
public abstract void 方法名();
}

子类:class 子类名:父类名
{
public override void 方法名() --此处方法名是从父类中继承到的
{
方法主体;
例如:Console.WriteLine();
}
}

1、抽象类不能被实例化
2、抽象方法一定存在抽象类中,抽象类中不一定只有抽象方法,还可以有普通方
法,抽象类无法实例化对象,那么想用抽象类中的普通方法,通过子类来用。
3、抽象类就是用来被继承的。

第三种形态:接口
人 人这个类派生出了两个类,男人,女人,只有吃饭和睡觉两个方法;
工作 另一个组开发了男人和女人需要的工作模块,技能,工作地点
娱乐 又一个组开发了男人和女人需要的娱乐模块,爱好,运动

interface 定义关键字

格式:
public interface GongZuo
{
void 方法名();
void 方法名();
}

如何使用接口继承:
class NanRen : Ren, GongZuo, YuLe
{

}

一个类只能继承一个父类,但是可以继承无数个接口
接口和抽象类都是为了继承而生的,不可以实例化创建对象
实现接口的方法:
格式:public void 方法名() -----从接口继承来的方法
{
方法主体;
}

 

以上是关于多态—虚方法抽象类接口的主要内容,如果未能解决你的问题,请参考以下文章

面向对象--多态虚方法重写抽象类接口

c# 多态的美丽(虚方法抽象接口实现)

面向对象--多态虚方法重写抽象类接口

多态—虚方法抽象类接口

面向对象 多态抽象类和接口

实现多态的方法