虚方法

抽象类与抽象方法

1、书写规范:

在类前面加上abstract关键字,就成为了抽象类;在一个方法前面加上abstract关键字就成为了抽象方法(抽象方法不能有实现方法,直接在后面加分号)

例:

abstract class Fruit  //抽象类
{
public abstract void GrowInArea(); //抽象方法
}

2、抽象类的注意事项:

1)当一个类变为抽象类之后就不能作为对象来使用了,无法new出来

2)抽象方法必须放在抽象类里面(但抽象类中不一定有抽象方法)

3)没有子类的话可以正常运行

4)抽象类里面的方法只能在该类中调用,若在其他类中调用需要通过子类

3、抽象方法的注意事项:

1)抽象方法里面不能写内容(不能创建对象)

2)子类中必须override才能运行

3)有几种抽象方法,就必须在子类中写几种,否则出错

4、在子类中重写抽象基类的方法:

class Apple:Fruit
{
public override void fangfa()
{
Console.WriteLine("tasty!");
}
}

5、在函数中引用抽象类的子类对象:

抽象类  抽象类变量名 = new 继承自此抽象类的具体子类名();

例:

Fruit f = new Apple();
f.fangfa(); //打印结果为tasty!

注意:包含抽象方法的类一定是抽象类,但抽象类中的方法不一定是抽象方法。

接口

  当一个类与多个类之间都存在关系时,单纯用父子关系无法表达出来,为了解决这个问题,引入了接口这个概念,使一个类可以对应多个接口

  接口可以看做一种“纯”的抽象类,它的所有方法都是抽象方法。

1、接口的定义与使用:

用关键字interface定义接口。例:

public iterface Iswim
{
void Swim();
//接口中不能写字段、方法,Swim()相当于抽象方法,需要在继承该接口的类中重写
}
public iterface Ifood
{
void Cook();
}

实现接口可以用与继承相同的语法。例:

 1 //定义一个抽象类,使Duck继承自一个抽象类,实现两个接口
2 public abstract class Bird
3 {
4 public abstract void Fly();
5 }
6 public class Duck:Bird,Iswim,Ifood
7 {
8 //实现Iswim接口
9 public void Swim()
10 {
11 Console.WriteLine("swim");
12 }
13 //实现Ifood接口
14 public void Cook()
15 {
16 Console.WriteLine("cook");
17 }
18 //实现抽象类Bird中的抽象方法
19 public override void Fly()
20 {
21 Console.WriteLine("fly");
22 }
23 }

使用接口需要套用公式:接口类型名  变量名 = new 实现了接口的类型名();如:

Duck d = new Duck();
d.Fly();
d.Cook();
d.Swim();

c#面向对象基础 重写、虚方法、抽象类的更多相关文章

  1. C#面向对象基础:virtual方法,abstract方法,区别

    virtual 关键字用于修饰方法.属性.索引器或事件声明,并使它们可以在派生类中被重写.默认情况下,类中的方法是非虚的,非虚的方法不能在子类中被覆盖(override),但是可以隐藏(new),但这 ...

  2. C# - 重写虚方法

    项目目录: 创建教师类(Teacher),虚方法有Teach(); 创建学生类(Student),重写的方法是Teach(); 教师类: · 加上关键字 Virtual 就是声明可以重写此方法. us ...

  3. python开发面向对象基础:接口类&抽象类&多态&钻石继承

    一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实 ...

  4. c#面向对象基础 类、方法、方法重载

    C#是纯粹的面向对象编程语言,它真正体现了“一切皆为对象”的精神.在C#中,即使是最基本的数据类型,如int,double,bool类型,都属于System.Object(Object为所有类型的基类 ...

  5. 抽象类和虚方法、base关键字

    微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/abstract ...

  6. 【C#基础概念】虚方法virtual

    目录: 一.虚方法的概念 二.虚方法的特点 三.虚方法的作用 四.虚方法的声明 五.虚方法的执行 六.虚拟类的规则 一.虚方法的概念 在C#中,虚方法就是可以被子类重写的方法,如果子类重写了虚方法,则 ...

  7. 附录A——面向对象基础

    在学习设计模式之前,C#语言中一些基本的面向对象的知识还是应该具备的,比如像继承.多态,接口.抽象类,集合.泛型等. A.2 类与实例 什么是对象? 一切事物(事和物)都是对象,对象就是可以看到.感觉 ...

  8. Csharp多态的实现(虚方法)

    1.什么是抽象类 1.1虚方法是用virtual修饰,在子类中用override进行重写 1.2虚方法是一个方法,放在类里面(可以再下面的代码中看到) 1.3虚方法可以 重写,也可以不重写(这个可以再 ...

  9. C#三大方法:虚方法、静态方法、实例方法

    虚方法:使用virtual关键字定义,当子类继承父类时,可以对父类中的虚方法进行重写. 如下面代码中的类B,它继承类A,类A实现了接口I(实现了接口中的foo()方法).在类A中使用virtual将f ...

随机推荐

  1. 转载 linux内核 asmlinkage宏

    转载http://blog.chinaunix.net/uid-7390305-id-2057287.html 看一下/usr/include/asm/linkage.h里面的定义:#define a ...

  2. Linux学习笔记(20) Linux系统管理

    1.进程管理 进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源. 进程管理的作用有判断服务器健康状态.查看系统中所有进程及杀死进程.一般都可以采用 ...

  3. 查询sqlserver 正在执行的sql语句的详细信息

    SELECT [Spid] = session_Id, ecid, [Database] = DB_NAME(sp.dbid), [User] = nt_username, [Status] = er ...

  4. 简单记录在Visual Studio 2013中创建ASP.NET Web API 2

    在很多跨平台的应用中就需要Web API ,比如android与数据库的交互. Create a Web API Project 选择新建项目下的模板下的Visual C#节点下的Web节点,在模板列 ...

  5. 编写Redis启停服务脚本

    脚本内容如下; fi   esac   exit$RETVAL 下载脚本:艺搜下载 将下载下来的脚本放在/etc/init.d/目录下 更改脚本权限 chmod 777 /etc/init.d/red ...

  6. js倒计时(可定义截止日期)

    <div id="times_wrap" class="time_num"> 距离结束时间: <div class="time_w& ...

  7. 5.19[bzoj树网的核]

    围观了final,SJTU还是飞了,泽民同志劲啊! 膜拜归膜拜...回来开题 bzoj1999树网的核 最近就喜欢给自己找切不动的题...QAQ ok.....昨天在家里做了一个下午+晚上 又困&am ...

  8. 在字符界面tty1~tty6中使用鼠标,并用其复制粘贴

    1. 安装 无意间看到gpm这个服务可以让你在tty1~tty6 环境中使用鼠标. 先用 rpm -qa gpm 查看是否已经安装此服务,如果提示以安装,则可以直接开启: 否则就要通过 yum ins ...

  9. MFC 打开其他程序

    WinExec("程序路径",SW_SHOW);

  10. 每天一个linux命令---netstat

    中间件访问第三方服务,经常出现连不上的情况.可以增加监控,当出现异常的时候触发一些动作通知程序员 例如:  要在app 部署的主机上,应该登录 172.16.210.52 后运行  netstat - ...