C# 接口interface的学习

2024-06-21 02:58

本文主要是介绍C# 接口interface的学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近看了看C#语法中的接口。记录下学习的内容。

首先是普通的类继承普通的接口。

using UnityEngine;
using System.Collections;
using System;
using Interface1;
namespace Interface1
{
//接口可由方法、属性、事件、索引器这4种成员类型任意组合构成,但不能包含字段。
//接口成员不能有定义(代码体)
//不能直接实例化接口
//类或结构体可继承多个接口
//接口本身可以继承多个接口
//继承接口的任何非抽象类型都必须实现接口的所有成员
interface MyInterface
{
string ID //默认访问权限是public,但是不能加修饰符
{
set;
get;
}
string name
{
set;
get;
}
//接口中的方法(函数)不能有定义(实体)
void SetID();
}
interface MyInterface2
{
void Add();
}
//类继承接口后,需要实现接口中的所有成员
class MyClass : MyInterface
{
string id_ = "";
string name_ = "";
//实现接口成员必须有public修饰
public string ID
{
get
{
return id_;
}
set
{
id_ = value;
}
}
public string name
{
get
{
return name_;
}
set
{
name_ = value;
}
}
public void SetID()
{
Debug.Log("MyInterface.SetID");
}
}
}
//类继承多个接口,需要实现所有接口的成员
class MyClass2 : MyInterface, MyInterface2
{
string id_ = "";
string name_ = "";
public string ID
{
get
{
return id_;
}
set
{
id_ = value;
}
}
public string name
{
get
{
return name_;
}
set
{
name_ = value;
}
}
public void Add()
{
}
public void SetID()
{
}
}
public class Interface_Test : MonoBehaviour
{
// Use this for initialization
void Start()
{
Interface1.MyClass mc = new Interface1.MyClass();
mc.SetID();
}
// Update is called once per frame
void Update()
{
}
}

类显示实现接口成员。
using UnityEngine;
using System.Collections;
using System;
using Interface2;
//显示实现接口成员
//当一个类继承两个接口时,这两个接口中的方法名是完全相同的标识符,而其功能是不相同的。
//为了区分不同接口中相同的标识符的方法,这时就可以显示地实现接口成员,即创建一个仅通过该接口调用并且特定于该接口的类成员。
namespace Interface2
{
interface MyInterface
{
string ID
{
set;
get;
}
string name
{
set;
get;
}
void SetID();
}
public interface MyInterface2
{
string ID
{
set;
get;
}
string name
{
set;
get;
}
void SetID();
}
//继承的两个接口中的成员标识符完全一样
//显示接口成员实现中不能包含访问修饰符、abstract、override、static、const
//显示接口成员属于接口成员,而不是类的成员,不能使用类对象访问,只能通过接口对象访问
class MyClass : MyInterface, MyInterface2
{
string id_ = "";
string name_ = "";
//显示地实现MyInterface2中的ID属性
string MyInterface2.ID
{
get
{
return id_;
}
set
{
id_ = value;
}
}
//显示地实现MyInterface中的ID属性
string MyInterface.ID
{
get
{
return id_;
}
set
{
id_ = value;
}
}
public string name
{
get
{
return name_;
}
set
{
name_ = value;
}
}
//显示地实现MyInterface中的SetID方法
void MyInterface.SetID()
{
Debug.Log("MyInterface.SetID");
}
//显示地实现MyInterface2中的SetID方法
void MyInterface2.SetID()
{
Debug.Log("MyInterface2.SetID");
}
}
}
public class Interface_Test1 : MonoBehaviour 
{
// Use this for initialization
void Start () 
{
Interface2.MyClass mc = new Interface2.MyClass();
MyInterface mi = mc; //接口不能直接实例化,这里使用类的对象实例化接口
mi.SetID(); //显示实现接口的成员只能通过接口对象访问
MyInterface2 mc2 = mc;
mc2.SetID(); 
}
// Update is called once per frame
void Update () 
{
}
}

基类实现接口成员。
using UnityEngine;
using System.Collections;
using System;
using Interface3;
//基类实现接口成员
namespace Interface3
{
interface MyInterface
{
string ID
{
set;
get;
}
string name
{
set;
get;
}
void SetID();
void SetName();
}
class MyClass
{
public virtual void SetName()
{
Debug.Log("MyClass.SetName");
}
}
//继承的基类中实现了继承的接口中的成员,意味着派生类隐式地支持这个接口
class MyClass2 : MyClass, MyInterface
{
string id_ = "";
string name_ = "";
string MyInterface.ID
{
get
{
return id_;
}
set
{
id_ = value;
}
}
public string name
{
get
{
return name_;
}
set
{
name_ = value;
}
}
public void SetID()
{
Debug.Log("MyClass2.SetID");
}
}
}
public class Interface_Test2 : MonoBehaviour 
{
// Use this for initialization
void Start () 
{
Interface3.MyClass2 m = new Interface3.MyClass2();
m.SetID();
m.SetName();
}
// Update is called once per frame
void Update () 
{
}
}

这篇关于C# 接口interface的学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080020

相关文章

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

C#中的 StreamReader/StreamWriter 使用示例详解

《C#中的StreamReader/StreamWriter使用示例详解》在C#开发中,StreamReader和StreamWriter是处理文本文件的核心类,属于System.IO命名空间,本... 目录前言一、什么是 StreamReader 和 StreamWriter?1. 定义2. 特点3. 用

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx