6、面向对象以及winform的简单运用(抽象基类与接口)
抽象类与抽象方法
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的简单运用(抽象基类与接口)的更多相关文章
- C#编程语言与面向对象——抽象基类与接口
在一个类前加“abstract”关键字,此类就成为抽象类. 对应的,在一个方法前加“abstract”关键字,此方法就成为抽象方法. abstract class Fruit //抽象类 { publ ...
- 类,抽象基类,接口类三者间的区别与联系(C++)
结构上的区别: 普通类:数据+方法+实现 抽象类:数据+方法(一定包含虚方法n>=1)+部分方法的实现 接口类:方法(纯虚方法) http://www.cnblogs.com/Tris-wu/p ...
- 1、面向对象以及winform的简单运用(开篇)
面向对象概述: 要学习好面向对象,我们应该从三个问题入手: 1.什么是面向对象? 2.为什么要面向对象? 3.该怎么面向对象? 面向对象,首先要有一个对象,那么对象是什么呢? 对象的定义是人们要进行研 ...
- Fluent_Python_Part4面向对象,11-iface-abc,协议(接口),抽象基类
第四部分第11章,接口:从协议到抽象基类(重点讲抽象基类) 接口就是实现特定角色的方法集合. 严格来说,协议是非正式的接口(只由文档约束),正式接口会施加限制(抽象基类对接口一致性的强制). 在Pyt ...
- NSObject class和NSObject protocol的关系(抽象基类与协议)
[转载请注明出处] 1.接口的实现 对于接口这一概念的支持,不同语言的实现形式不同.Java中,由于不支持多重继承,因此提供了一个Interface关键词.而在C++中,通常是通过定义抽象基类的方式来 ...
- 【Python】【元编程】【从协议到抽象基类】
"""class Vector2d: typecode = 'd' def __init__(self,x,y): self.__x = float(x) self.__ ...
- python(七):元类与抽象基类
一.实例创建 在创建实例时,调用__new__方法和__init__方法,这两个方法在没有定义时,是自动调用了object来实现的.python3默认创建的类是继承了object. class A(o ...
- PythonI/O进阶学习笔记_3.2面向对象编程_python的继承(多继承/super/MRO/抽象基类/mixin模式)
前言: 本篇相关内容分为3篇多态.继承.封装,这篇为第二篇 继承. 本篇内容围绕 python基础教程这段: 在面向对象编程中,术语对象大致意味着一系列数据(属性)以及一套访问和操作这些数据的方法.使 ...
- C# 面向对象 , 抽象基类
抽象基类 关键字, abstract abstract class SSS { public void aaa() { } } 作为抽象基类, 只能在 继承关系 中 担任父类的角色,不能出现在其他地 ...
随机推荐
- nyoj 115 城市平乱 dijkstra最短路
题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=115 dijkstra算法. #include "stdio.h" ...
- Elastic search入门
首先是下载elasticsearch https://www.elastic.co/downloads,解压: 然后下载了中文分析器ik,github上搜索elasticsearch-ik就能找到,h ...
- Ubuntu 14.04 LTS Server 无法挂载光盘 启动initramfs等问题
今天需要在戴尔R410服务器上装64位的Linux,师兄给了个14.04的server 64位镜像.一开始打算用U盘安装,用软碟通烧写镜像之后,在服务器端设置从U盘启动,但是安装到一半出现了光盘无法挂 ...
- java读取word内容
暂时只写读取word内容的方法. 依赖的jar: poi-3.9-20121203.jarpoi-ooxml-3.9-20121203.jarxmlbeans-2.3.0.jar package co ...
- java 19 -13 FIle类的一些方法2
package zl_file; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; ...
- mysql完整备份时过滤掉某些库
mysql进行完整备份时使用--all-database参数比如:#mysqldump -u root -h localhost -p --all-database > /root/all.sq ...
- CentOS 7设置网络开机自动连接
用root登陆系统 修改/etc/sysconfig/network-scripts/ifcfg-enpxxxxxx(xxx)文件,其内容原本如下 TYPE=Ethernet BOOTPROTO=dh ...
- Discuz! X的CSS加载机制
首先,每个页面都会加载以下两个css,data/cache/style_1_common.css和data/cache/style_1_forum_index.css.先讲讲这两个文件名的命名规则:第 ...
- 怎么样快速学习AngularJS?
其实AngularJS的官方网站首页的几个例子已经很好的展示了AngularJS的一些特性,下面我就从几个例子一步一步的讲解AngularJS吸引人的东西并且实际项目中是怎么使用ng的. 首先还是从第 ...
- Html5实践之EventSource
最近尝试了一下服务器端的推送,之前的做法都是客户端轮询,定时向服务器发送请求.但这造成了我的一些困扰: 1:轮询是由客户端发起的,那么在服务端就不能判别我要推送的内容是否已经过期,因为我很难判断某个信 ...