Csharp多态的实现(接口)
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)什么是多态, 多态就是一个类表现出多种不同的形态, 他的核心是子类对象作为父类对象使用 (2)怎么实现多态, 在Csharp中,可以用接口, 虚方法, 抽象类实现多态,当然,不管是这三种的那一个 ...
- Csharp多态的实现(抽象类)
1.什么是抽象类 抽象类是虚拟的类,不能创建对象,用abstract修饰,在子类中用override进行重写 抽象类中可以存放抽象方法,属性,也可以存放非抽象方法,属性(这个在下面的代码可以看出来的) ...
- Csharp多态的实现(虚方法)
1.什么是抽象类 1.1虚方法是用virtual修饰,在子类中用override进行重写 1.2虚方法是一个方法,放在类里面(可以再下面的代码中看到) 1.3虚方法可以 重写,也可以不重写(这个可以再 ...
- java接口,接口的特性,接口实现多态,面向接口编程
package cn.zy.cellphone; /**接口是一种引用数据类型.使用interface声明接口,形式 * 形式:public interface 接口名称{} * 接口不能拥有构造方法 ...
- .NET Core CSharp初级篇 1-5 接口、枚举、抽象
.NET Core CSharp初级篇 1-5 本节内容类的接口.枚举.抽象 简介 问题 如果你需要表示星期或者是某些状态,使用字符串或者数字是否不直观? 你是否发现,无论何种电脑,它的USB口的设计 ...
- java继承多态和抽象类接口
一.继承 通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类.已有的称为父类,新的类称为子类(父类派生子类,子类继承父类).(1)继承的优点: ①代码的可重用性: ②父类的属性 ...
- day27 多态 多继承 接口类 抽象类
简单来说:多态就是指一个相同的方法名在不同的对象调用的时候实现一样或者不一样的方法实例1: 动物类有个方法 "嚎叫" 狗类也有个方法 "嚎叫" 猫类继承了动物类 ...
- 接口的多态使用; 接口应用实例:U盘、打印机可以使用共同的USB接口,插入到电脑上实现各自的功能。
接口的多态使用 接口应用实例:U盘.打印机可以使用共同的USB接口,插入到电脑上实现各自的功能.
- 01 语言基础+高级:1-4 接口与多态_day10【接口、多态】&&day11【final、匿名内部类】
day10[接口.多态] 接口三大特征——多态引用类型转换 教学目标写出定义接口的格式写出实现接口的格式说出接口中成员的特点能够说出使用多态的前提条件理解多态的向上转型理解多态的向下转型 day10_ ...
随机推荐
- AjaxPro.dll,asp.net 前台js调用后台方法(无刷新)
1.什么是Ajax Ajax是异步Javascript和XML(Asynchronous JavaScript and XML)的英文缩写."Ajax"这个名词的发明人是Jesse ...
- 04737_C++程序设计_第4章_类和对象
例4.1 描述点的Point类. 例4.2 根据上面对Point类的定义,演示使用Point类的对象. #define _SCL_SECURE_NO_WARNINGS #include <ios ...
- MFC_Office
添加新项目,MFC应用程序 多个顶级文档,项目类型:Office,其他默认,点击下一步 复合文档支持:容器,右边都勾选,点击下一步 文件拓展名:c,全选,其他默认,点击下一步 数据库支持:无,其他默认 ...
- (转)iOS 开发,工程中混合使用 ARC 和非ARC
[前提知识] ARC:Automatic Reference Counting,自动引用计数 在开发 iOS 3 以及之前的版本的项目时我们要自己负责使用引用计数来管理内存,比如要手动 retain. ...
- B/S状态(同步)AJAX技术(异步)
同步(Synchronization).它是最常见的click-refresh状态,或提交一个表单,然后整个页面被刷新. 异步(Asynchrony).当前非常热的AJAX就是典型样例,提交请求返回对 ...
- 兔子--Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK
错误原因: Activity打开别的Activity的时候会默认把新的Activity放到自己的task中,所以不用指定,可是别的地方就得指定了. 解决的方法:intent.addFlags(Inte ...
- [转]spring mvc注解方式实现向导式跳转页面
由于项目需要用到向导式的跳转页面效果,本项目又是用spring mvc实现的,刚开始想到用spring 的webflow,不过webflow太过笨重,对于我们不是很复杂的跳转来说好像有种“杀鸡焉用牛刀 ...
- SqlServer查询数据库所有表
//SqlServer查询数据库所有表SELECT * FROM SYSOBJECTS WHERE TYPE='U' and name like '%dict%'
- JAVA-反射-getGenericSuperclass()
1 public class Person<T> { 2 3 } 4 5 import java.lang.reflect.ParameterizedType; 6 import java ...
- Struts2返回Json数据(使用Struts2插件)
这篇我将介绍如何使用Struts2的struts2-json-plugin.jar插件返回JSON数据. 一.其中主要步骤有: 1.将struts2-json-plugin.jar插件拷贝到项目的&q ...