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. Network()

    Network Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 60000/30000K (Java/Other) Total Submi ...

  2. shape和selector是Android UI设计中经常用到的

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和 ...

  3. Linux 下编译Android-VLC开源播放器详解(附源码下载)

    这两天需要做音视频播放相关的东西,所以重新找了目前android下的解码库.Android自带的解码库支持不全,因此很多第三方播放器都是自带解码器,绝大部分都是使用FFMpeg作为解码库.我11年的时 ...

  4. easyui的样式easyui-textbox的一个bug

    easyui-testbox这个样式很恶心,用了这个就不能用传统的JQ来取值了,最近在使用上又发现了一个问题,就是赋值为0时,在输入框上会不显示,坑. <input class="ea ...

  5. JavaScript 继承方式的实现

    1.原型链继承 function superType(name){ this.name= 'milk'; } super.prototype.sayName=function(){ console.l ...

  6. Android 树形菜单

    首先来一张萌萌哒的效果图(比较懒 - -) 然后是代码: // Node package com.example.treeview.utils; import java.util.ArrayList; ...

  7. 织梦list文章列表按权重排序

    织梦的文章列表按权重排序 DEDECMS(织梦)5.6系统支持文档权重weight排序,可以在模板中使用: {dede:arclist row='10' titlelen='50' orderby=' ...

  8. C#学习日志 day10 -------------- problem statement

    Revision History Date Issue Description Author 15/May/2015 1.0 Finish most of the designed function. ...

  9. Linux LVM硬盘管理及LVM分区扩容

    LVM磁盘管理 一.LVM简介... 1 二. LVM基本术语... 2 三. 安装LVM... 3 四. 创建和管理LVM... 4 2. 创建PV.. 6 3. 创建VG.. 7 4. 创建LV. ...

  10. QSqlDatabase的进一步封装(多线程支持+更加简单的操作)——同时支持MySQL, SQL Server和Sqlite

    开发背景: 1.直接用QSqlDatabase我觉得太麻烦了: 2.对于某些数据库,多个线程同时使用一个QSqlDatabase的时候会崩溃: 3.这段时间没什么干货放出来觉得浑身不舒服,就想写一个. ...