20141014C#面向对象抽象方法,抽象类,接口
里氏代换原则。可以用子类的对象替代父类的对象。
抽象依赖原则。依赖——形参,关联
一、抽象方法:
在一些父类中,某些行为不是非常明确,因此无法用代码来具体实现,但是类必须具备此方法,因此把这样的方法定义为抽象方法。abstract
特点:1.只声明,不实现。2.加abstract关键字。
eg:
public abstract class Ren //类中含有抽象方法,此类也必须是抽象类。
{
public abstract void Eat(); //以分号结束,没有花括号
}
class Chinese:Ren
{
public override void Eat()
{
Console.WriteLine("用筷子吃饭。");
}
}
二、抽象类:
无法被实例化的类。关键词是abstract 。凡是带有abstract关键词的类,都无法new 出来。
凡是带有抽象方法的类,肯定是抽象类;抽象类却不一定包含抽象方法。
构造方法、静态成员方法不能被声明为抽象方法。
一个非抽象类必须实现从父类继承来的所有抽象方法。
不能创建抽象类的实例。
三、接口 interface: 极度抽象的类。无成员变量,无实例方法,无实例属性,只有抽象方法或抽象属性。接口就是一个规则。
接口用interface关键词来定义。
接口中的方法都是抽象的,因此无需加abstract。
接口中的方法都是公有的,无需加访问修饰符。
生活中的例子:标准,协议
接口可以继承父接口
一个类可以实现(继承)多个接口
eg:
public interface IUSB
{
void Start();
void Stop();
}
public class Camera : IUSB
{
public void Start()
{
Console.WriteLine("打开摄像头了");
} public void Stop()
{
Console.WriteLine("摄像头关闭了");
}
} public class UDisk : IUSB
{
public void Start()
{
Console.WriteLine("U盘启动了");
} public void Stop()
{
Console.WriteLine("U盘退出了");
}
} public class Computer
{
public void CheckUSB(IUSB usb)
{
usb.Start();
}
public void CloseUSB(IUSB usb)
{
usb.Stop();
}
}
命名空间:相当于一个包。对类进行分类管理的工具。
一般的命名规则:公司名.项目名.模块名
项目名:用给人类,标识出这个项目是做什么的
程序集:程序编译出来的.exe或.dll文件。程序集的名字就是编译出来的EXE或dll的名字。
20141014C#面向对象抽象方法,抽象类,接口的更多相关文章
- 面向对象 继承 抽象类 接口 static 权限修饰符
Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...
- 06 面向对象:多态&抽象类&接口&权限修饰符&内部类
多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父 ...
- python面向对象 : 抽象类(接口类),多态,封装(私有制封装)
一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对 ...
- 面向对象的理解 抽象类&接口
一.关于面向对象 1.什么是面向对象 在解释面向对象之前,先说说面向过程.学过C的同学都知道,C就是面向过程的一种语言.那什么是面向过程呢?比方说组装主机,对于面向过程,需要从0开始.买cpu ...
- 十、Java基础---------面向对象之抽象类与接口
抽象类(abstract) 当编写一个类时,时常会为该类定义一些方法,这些方法的使用用以描述该类的行为方式,那么这些方法都有具体的方法体.但是在某些情况下,某个父类只是知道子类应该包含怎样的方 ...
- java抽象类、抽象方法、接口、实现接口详解
对于java中的抽象类,抽象方法,接口,实现接口等具体的概念就不在这里详细的说明了,网上书本都有很多解释,主要是我懒,下面通过一个例子来说明其中的精髓要点,能不能练成绝世武功,踏上封王之路,就看自己的 ...
- JavaSE基础知识(5)—面向对象(抽象类和接口)
一.抽象类 1.理解 用abstract关键字定义的类,称为抽象类用abstract关键字定义的方法,称为抽象方法意义:当设计父类时,发现该父类根本不需要创建对象,并且里面有不好描述的方法.这个时候往 ...
- 第四百一十二节,python接口,抽象方法抽象类
Python接口 在Python中所谓的接口,有两种,一种是通过url访问的api接口 一种是一个对象的接口 构造接口 class Ijiekou: """ 定义一个约束 ...
- Java:【面向对象:抽象类,接口】
本文内容: 抽象类 接口 抽象类与接口的异同 首发日期:2018-03-24 抽象类: 虽然已经有了父类,但有时候父类也是无法直接描述某些共有属性的,比如哺乳类和人类都会叫,而一般来说哺乳类这个父类并 ...
随机推荐
- Entity Framework学习笔记
原文地址:http://www.cnblogs.com/frankofgdc/p/3600090.html Entity Framework学习笔记——错误汇总 之前的小项目做完了,到了总结经验和 ...
- uva 10972 RevolC FaeLoN cdoj 方老师和农场
//自己写的第一发tarjan 解:先进行双连通分解并缩点,分解后一定是一颗树,设叶节点个数为n那么答案就是(n+1)/2 关于双连通分量求解:在跑tarjan时判断每个点连向父节点的边是否是桥,如果 ...
- iterm快捷键及操作技巧(附Linux快捷键)
标签操作 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:com ...
- Android Handler Leak
转自:Android中使用Handler引发的内存泄露 在Activity中,经常会用到自定义的Handler来处理主线程收到的Message,但是ADT20以后,直接定义的如下定义的内部会有提示说这 ...
- [转]Visual Studio 2008中如何比较二个数据库的架构【Schema】和数据【Data】并同步
使用场景: 在团队开发中,每一个人都有可能随时更新数据库,这时候数据库中数据和架构等信息都会发生变化.如果更新不及时,就会发生数据错误或数据丢失的风险,影响团队的开发效率和 项目进度,这时候我们该怎么 ...
- Web 应用配置Log4Net
1.第一步:在web.config文件添加如下代码: [sourcecode language="csharp"] <configSections> <secti ...
- TextView 为部分文字添加下划线,并实现单击事件
在开发应用的过程中经常会遇到显示一些不同的字体风格的信息,如关键词高亮显示的等.对于类似的情况,一般我们会想着使用多个TextView去实现,对于每个TextView设置不同的字体风格来满足需求. ...
- BOOST CHRONO steadycolock::now分析
一直觉得boost的时间库不是很好用,当然,也有可能是我没有深入理解,所以,把代码弄出来看看或许要好些,时间处理中,取当前时间真的是太常见,而boost中各种clock又区分不清楚,然而,代码能说明一 ...
- Beyond Compare设置默认为ANSI格式
工具 -> 文件格式 -> 选中C,C++,... -> 转换 -> 外部程序(ANSI文件名) 且 编码(选“ANSI”)-> 保存 -> 关闭
- json 的 使用方法以及与数组的区别
JSON简介,全称是JavaScript Object Notation.它是基于JavaScript编程语言ECMA-262 3rd Edition-December 1999标准的一种轻量级的数据 ...