1.什么是接口

接口可以看做是一个标准, 所有继承的子类需要按照接口中声明的方法来

接口用关键字 interface 修饰,接口的名字一般是I.........able ,表示我有什么能力

接口一般是在命名空间下的,也就是说跟类是在同一级别的  (接口也可以放在类里面,但是没有什么意义,因为可以把接口看做是一个特殊的类,类是解决方法,接口也是,所以放在里面没什么屌意思)

接口里面的方法,属性不能用public,private等修饰

接口里面的方法不实现,只声明,真正的实现是在继承的子类中实现

接口里面只能放属性,方法,不能放字段

当然,这些都可以在代码中观察出来

2.接下来用代码来实现多态,然后观察一下,有什么特点

//首先在命名空间下面声明一个接口
interface Ianimalable
{
//接口里面不能有字段,可以有方法,有自然属性
void say();
string name
{
get;
set;
}
} interface Ipersonable
{
void hisay();
} //一个接口可以同时继承多个接口
interface Istudentable : Ianimalable,Ipersonable
{
void HIsay();
} //在命名空间下面定义一个鹦鹉类,继承与接口
class Parrot:Ianimalable
{
private string _name;
public string name
{
get
{
return _name;
}
set
{
_name = value;
}
}
//下面是显式接口的调用方法,用下面的格式写方法体
// 返回值 接口名.函数名(){方法体};
void Ianimalable.say ()
{
Console.WriteLine("我是一个鹦鹉,我叫{0}", name);
}
} //在命名空间下面定义一个狗类,继承与接口
class Dog:Ianimalable
{
private string _name;
public string name
{
get
{
return _name;
}
set
{
_name = value;
}
}
public void say()
{
Console.WriteLine("我是一个狗,我叫{0}", _name);
}

定义一个接口变量,比如说 Ianimalable animal = new Parrot();     animal = new Dog();

这里可以看到,接口就像一个特殊的类, 接口不是被实例化,但是可以通过子类间接实例化

2.1 当继承接口的子类中的方法名和接口中的方法名一样的话,这就需要用到显示接口,这个在代码中可以看到具体的使用方法

2.2 一个接口可以被多个接口或者多个类继承, 一个接口可以同时继承多个接口继承, 但是一个类不能同时继承多个类,  一个接口可以同时继承类和接口, 但是接口一定要在后面

2.3 animal先装的是鹦鹉类,animal后来装的是狗类,装那个类,就表现出那个类的特征

2.4 这样接口就表现了不同的形态,可以是狗类,可以是鹦鹉类等等, 就实现了多态

Csharp多态的实现概述

Csharp多态的实现(接口)的更多相关文章

  1. Csharp多态的实现概述

    (1)什么是多态, 多态就是一个类表现出多种不同的形态, 他的核心是子类对象作为父类对象使用 (2)怎么实现多态, 在Csharp中,可以用接口, 虚方法, 抽象类实现多态,当然,不管是这三种的那一个 ...

  2. Csharp多态的实现(抽象类)

    1.什么是抽象类 抽象类是虚拟的类,不能创建对象,用abstract修饰,在子类中用override进行重写 抽象类中可以存放抽象方法,属性,也可以存放非抽象方法,属性(这个在下面的代码可以看出来的) ...

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

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

  4. java接口,接口的特性,接口实现多态,面向接口编程

    package cn.zy.cellphone; /**接口是一种引用数据类型.使用interface声明接口,形式 * 形式:public interface 接口名称{} * 接口不能拥有构造方法 ...

  5. .NET Core CSharp初级篇 1-5 接口、枚举、抽象

    .NET Core CSharp初级篇 1-5 本节内容类的接口.枚举.抽象 简介 问题 如果你需要表示星期或者是某些状态,使用字符串或者数字是否不直观? 你是否发现,无论何种电脑,它的USB口的设计 ...

  6. java继承多态和抽象类接口

    一.继承 通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类.已有的称为父类,新的类称为子类(父类派生子类,子类继承父类).(1)继承的优点:    ①代码的可重用性:    ②父类的属性 ...

  7. day27 多态 多继承 接口类 抽象类

    简单来说:多态就是指一个相同的方法名在不同的对象调用的时候实现一样或者不一样的方法实例1: 动物类有个方法 "嚎叫" 狗类也有个方法 "嚎叫" 猫类继承了动物类 ...

  8. 接口的多态使用; 接口应用实例:U盘、打印机可以使用共同的USB接口,插入到电脑上实现各自的功能。

    接口的多态使用 接口应用实例:U盘.打印机可以使用共同的USB接口,插入到电脑上实现各自的功能.

  9. 01 语言基础+高级:1-4 接口与多态_day10【接口、多态】&&day11【final、匿名内部类】

    day10[接口.多态] 接口三大特征——多态引用类型转换 教学目标写出定义接口的格式写出实现接口的格式说出接口中成员的特点能够说出使用多态的前提条件理解多态的向上转型理解多态的向下转型 day10_ ...

随机推荐

  1. 分布式-在win7上安装linux操作系统

    由于大多数的分布式计算框架.分布式存储系统.分布式平台都支持在unix类似的环境下.所以要做分布式的实验和学习的话,还是推荐装个linux系统.我这里安装的是ubuntu,由于之前装过这个. 一.下载 ...

  2. 扑克k,你知道的人物吗?

    在扑克牌中,黑桃K——大卫王(以色列联合王国第二任国王):红桃K——查里曼大帝(法兰克国王,后加冕为罗马人的皇帝):梅花K——亚历山大大帝(马其顿帝国国王):方块K——凯撒大帝(罗马共和国终生执政官) ...

  3. C#中T的用法

    之前一直用List<T>这样的泛型,看到过有些参数类型也可以直接用T的,觉得很好用,但是一直用不了,现在才发现原来是少加了<T> public T getdate<T&g ...

  4. 12个CSS高级技巧汇总

    1.使用 :not() 在菜单上应用/取消应用边框 先给每一个菜单项添加边框 CSS Code复制内容到剪贴板 /* add border */ .nav li { border-right: 1px ...

  5. 浅谈print2flash的在线预览转换应用(原创)

    print2flash是一种在线预览转换工具,可以将doc.docx.xls.pdf.ppt等格式的文档转换成flash文件进行预览,因为之前使用的flash2paper只支持32为操作系统,不支持6 ...

  6. NOIP第二次模拟赛 stage1【划分数列(seq.pas/c/cpp)

    7划分数列(seq.pas/c/cpp) [题目描述] 给你一个有n个元素的数列,要求把它划分成k段,使每段元素和的最大值最小 [输入格式] 第一行两个正整数n,k 第二行为此数列ai [输出格式] ...

  7. 利用oxygen编辑并生成xml文件,并使用JAVA的JAXB技术完成xml的解析

    首先下载oxygen软件(Oxygen XML Editor),目前使用的是试用版(可以安装好软件以后get trial licence,获得免费使用30天的权限,当然这里鼓励大家用正版软件!!!) ...

  8. EassyMock实践 自定义参数匹配器

    虽然easymock中提供了大量的方法来进行参数匹配,但是对于一些特殊场合比如参数是复杂对象而又不能简单的通过equals()方法来比较,这些现有的参数匹配器就无能为力了.easymock为此提供了I ...

  9. Java提高学习之Object(4)

    哈希码 问: hashCode()方法是用来做什么的? 答: hashCode()方法返回给调用者此对象的哈希码(其值由一个hash函数计算得来).这个方法通常用在基于hash的集合类中,像java. ...

  10. 在windows 8.1 64位配置python和opencv

    之前在linux下安装python和opencv及相关的库,都可以直接命令行操作.最近需要在windows下配置一下,查了一些资料,发现网上有很多关于python和opencv的配置,但由于不同版本问 ...