抽象类与抽象方法

1、书写规范:

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

例:

abstract class Chouxiang  //抽象类
{
public abstract void fangfa(); //抽象方法
}

2、抽象类的注意事项:

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

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

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

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

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

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

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

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

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

class Lei:Chouxiang
{
public override void fangfa()
{
Console.WriteLine("抽象类");
}
}

5、在函数中引用抽象类的子类对象:
抽象类  抽象类变量名 = new 继承自此抽象类的具体子类名();

例:

Chouxiang c = new Lei();
c.fangfa(); //打印出来结果为“抽象类”

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

接口

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

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

1、接口的定义与使用:

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

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

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

 //定义一个抽象类,使Duck继承自一个抽象类,实现两个接口
public abstract class Bird
{
public abstract void Fly();
}
public class Duck:Bird,Iswim,Ifood
{
//实现Iswim接口
public void Swim()
{
Console.WriteLine("swim");
}
//实现Ifood接口
public void Cook()
{
Console.WriteLine("cook");
}
//实现抽象类Bird中的抽象方法
public override void Fly()
{
Console.WriteLine("fly");
}
}

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

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

6、面向对象以及winform的简单运用(抽象基类与接口)的更多相关文章

  1. C#编程语言与面向对象——抽象基类与接口

    在一个类前加“abstract”关键字,此类就成为抽象类. 对应的,在一个方法前加“abstract”关键字,此方法就成为抽象方法. abstract class Fruit //抽象类 { publ ...

  2. 类,抽象基类,接口类三者间的区别与联系(C++)

    结构上的区别: 普通类:数据+方法+实现 抽象类:数据+方法(一定包含虚方法n>=1)+部分方法的实现 接口类:方法(纯虚方法) http://www.cnblogs.com/Tris-wu/p ...

  3. 1、面向对象以及winform的简单运用(开篇)

    面向对象概述: 要学习好面向对象,我们应该从三个问题入手: 1.什么是面向对象? 2.为什么要面向对象? 3.该怎么面向对象? 面向对象,首先要有一个对象,那么对象是什么呢? 对象的定义是人们要进行研 ...

  4. Fluent_Python_Part4面向对象,11-iface-abc,协议(接口),抽象基类

    第四部分第11章,接口:从协议到抽象基类(重点讲抽象基类) 接口就是实现特定角色的方法集合. 严格来说,协议是非正式的接口(只由文档约束),正式接口会施加限制(抽象基类对接口一致性的强制). 在Pyt ...

  5. NSObject class和NSObject protocol的关系(抽象基类与协议)

    [转载请注明出处] 1.接口的实现 对于接口这一概念的支持,不同语言的实现形式不同.Java中,由于不支持多重继承,因此提供了一个Interface关键词.而在C++中,通常是通过定义抽象基类的方式来 ...

  6. 【Python】【元编程】【从协议到抽象基类】

    """class Vector2d: typecode = 'd' def __init__(self,x,y): self.__x = float(x) self.__ ...

  7. python(七):元类与抽象基类

    一.实例创建 在创建实例时,调用__new__方法和__init__方法,这两个方法在没有定义时,是自动调用了object来实现的.python3默认创建的类是继承了object. class A(o ...

  8. PythonI/O进阶学习笔记_3.2面向对象编程_python的继承(多继承/super/MRO/抽象基类/mixin模式)

    前言: 本篇相关内容分为3篇多态.继承.封装,这篇为第二篇 继承. 本篇内容围绕 python基础教程这段: 在面向对象编程中,术语对象大致意味着一系列数据(属性)以及一套访问和操作这些数据的方法.使 ...

  9. C# 面向对象 , 抽象基类

    抽象基类 关键字,  abstract abstract class SSS { public void aaa() { } } 作为抽象基类, 只能在 继承关系 中 担任父类的角色,不能出现在其他地 ...

随机推荐

  1. Scribefire离线编写博客的方法

    用Firefox下载Scribefire next插件www.scribefire.com cnblogs添加方法: URL:http://www.cnblogs.com/[你的博客名] API为ht ...

  2. 第九章:四大组件之Broadcast Receiver

    第九章:四大组件之Broadcast Receiver   一.广播的功能和特征 广播的生命周期很短,经过调用对象-->实现onReceive-->结束,整个过程就结束了.从实现的复杂度和 ...

  3. MSBI--enlarge the DW database table volume

    我们在学习MSBI的时候,经常会使用官方提供的Adventureworks和AdventureworksDW示例数据库,但是官方提供的数据量有点小, 以DW为例,Factinternetsales只有 ...

  4. 【问题&解决】解决创建Android模拟器时提示"No system images installed for this target"的问题

    在创建Android模拟器时间发现提示“No system images installed for this target”问题,无法创建模拟器,如下图: 解决:经上网查证,发现原因在于CPU/AB ...

  5. 怎样用Zbrush中的Curves Tubes创建手指

    之前我们已经能够初步完成了模型的人体躯干,今天的Zbrush教程将继续使用Curves Tubes创建手指,实现更细致的塑形.文章内容仅以fisker老师讲述为例,您也可以按照自己的想法,跟着老师的步 ...

  6. redis 一二事 - 设置过期时间,以文件夹形式展示key显示缓存数据

    在使用redis时,有时回存在大量数据的时候,而且分类相同,ID相同 可以使用hset来设置,这样有一个大类和一个小分类和一个value组成 但是hset不能设置过期时间 过期时间只能在set上设置 ...

  7. uGUI VS NGUI

    前言 这篇日志的比较是根据自己掌握知识所写的,请各路大神多多指教. 引擎版本: Unity 4.6 beta 两者区别 1.uGUI的Canvas 有世界坐标和屏幕坐标 2.uGUI的Button属性 ...

  8. 【hibernate】<第二节>hibernate的一对多映射(基本类型)

    所需工具与前文一致! 第一部分内容:基本类型的一对多(one to many) 以部门表与员工表为例: 目录结构: hibernate.cfg.xml内容 <?xml version=" ...

  9. iOS打包导出时出现Missing iOS Distribution signing

    iOS打包导出时出现Missing iOS Distribution signing 上传APP就出现Missing iOS Distribution signing indetity for 打包i ...

  10. 层叠上下文(The stacking context)

    MDNThe stacking context 层叠上下文是HTML元素的三维概念,这些HTML元素在一条假想的相对于面向(电脑屏幕的)视窗或者网页的用户的z轴上延伸,HTML元素依据其自身属性按照优 ...