前面接触了抽象类,它的特点是子类必须实现abstract修饰的方法。以及还有virtual修饰的方法,virtual修饰的方法子类可以重写也可以不重写而直接使用。但是由于C#也是单继承的,所以定义一个父类,然后继承来扩展一些类的时候,会遇到不合适的情况。因为我们程序员是用程序语言来描述世界的,所以我们的工程中组织类,命名类,写方法等,最好和现实世界相似,这样开发起来才不费劲,修改bug的时候就比较轻松。
比如,在一个工程中,用到了很多窗体,有些窗体需要对其关闭事件重新处理,有些需要对其改变大小事件处理。但是每写一个窗体时都要写一遍关闭事件或改变大小事件的方法,总是很烦的。这时可以用继承吗?
public class IControlAble1
{
public event EventHandler OnCloseEvent;//关闭
public void Control_Close(object sender, EventArgs e)
{
if (OnCloseEvent != null)
{
OnCloseEvent(sender, e);
}
}
}
public class IControlAble2
{
public event EventHandler OnSizeChangeEvent;//改变大小
public void Control_SizeChange(object sender, EventArgs e)
{
if (OnSizeChangeEvent != null)
{
OnSizeChangeEvent(sender, e);
}
}
}
试想一下,每写一个窗体类,都要继承一次IControlAble1或IControlAble2总是感觉很奇怪的,因为这两个类不是窗体类。这时有一个东西可以实现,这就是接口。
接口,书上是这样说的,接口是一种行为准则。而且对于接口生活中也很常见,比如我们常说USB2.0接口,USB2.0就是一种准则,所有生产USB线的厂家并没有直接关系,但是大家都遵守USB2.0这个准则来生产,每根线的连接处,长宽高是多少,每根数据线怎么排... 都要遵守这个准则。这样大家生产出来的线就能通用。
对于程序来说,就好比不同的类具有相同的超类,而且都实现了超类的抽象方法。这样所有类都有了某种准则。但是C#中是单继承的,这样实现起来比较困难。于是C#中就有了接口的概念。看看接口的标准形式和特点:
/// <summary>
/// 1、接口不允许public,private,interna、protected修饰,因为所有的接口都是公用的;
/// 2、成员不带代码体;
/// 3、接口不能定义字段成员;
/// 4、不能用关键字static,virtual,abstract、sealed修饰
/// 5、一个类可以实现多个接口
/// </summary>
interface IMyInterfaceAble
{
//方法、字段
int MyValue
{
get;
set;
}
void Method1();
void Method2();
}
C#中对接口的命名一般是:I***able,I表示接口,Able后缀。所以接口可以看做:有...能力的。
这样可以解决上面的问题了。将两个类修改为接口,然后其他窗体类实现就可以了。
interface IControlAble1
{
//没有代码体,并且不修饰
event EventHandler OnCloseEvent;//关闭
void Control_Close(object sender, EventArgs e);
}
interface IControlAble2
{
event EventHandler OnSizeChangeEvent;
void Control_SizeChange(object sender, EventArgs e);
}
public class MainForm : IControlAble1,IControlAble2//可以实现多个接口
{
/*
窗体代码
*/
public event EventHandler OnCloseEvent;
public void Control_Close(object sender, EventArgs e)
{
Console.WriteLine("重写关闭事件。");
}
public event EventHandler OnSizeChangeEvent;
public void Control_SizeChange(object sender, EventArgs e)
{
Console.WriteLine("重写大小改变事件。");
}
}
public class ChildForm1 : IControlAble1
{
/*
* 窗体代码
*/
public event EventHandler OnCloseEvent;
public void Control_Close(object sender, EventArgs e)
{
Console.WriteLine("重写关闭事件。");
}
}
public class ChildForm2 : IControlAble2
{
/*
窗体代码
*/
public event EventHandler OnSizeChangeEvent;
public void Control_SizeChange(object sender, EventArgs e)
{
Console.WriteLine("重写大小改变事件。");
}
}
这样,代码写起来更方便了,而且不会漏写。
分享到:
相关推荐
一、C#基础 C#的基础部分涵盖了语法、变量、数据类型、控制结构(如if语句、switch语句、循环)、函数、类和对象等核心概念。理解这些基础知识是构建任何C#程序的基石。此外,手册可能还会涉及命名空间、接口、继承...
以上就是C#常用的知识点,掌握这些基础知识将有助于你构建和维护高质量的C#应用程序。在实际编程过程中,还需要不断学习和理解更高级的主题,如并发处理、单元测试、设计模式等,以提升专业技能。
在“C#知识点整理 教学程序”中,我们可以深入探讨以下几个重要的C#入门知识点: 1. **基础语法**:C#的基础包括变量、数据类型、常量、运算符和控制流语句(如if-else、switch-case、for、while等)。理解这些基本...
【标题】"文件整理基础部分C#代码"的描述中提到了C#编程语言的应用基础知识,这可能包括了变量声明、数据类型、控制结构(如if语句、for循环、while循环)、函数定义与调用、类与对象、继承、接口、异常处理等核心...
【C# 知识点整理总结】 C# 是一种由微软公司开发的现代、通用的、面向对象的编程语言,其设计目标是简洁、高效、易于学习,并且具有丰富的编程特性。C# 是基于 C 和 C++ 的,但与 Java 有许多相似之处,尤其在面向...
在面试中,对C#基础知识的掌握是评估候选人能力的重要环节。本资料包针对C#的基础知识进行了整理,涵盖了面试中常见的考点,以下是这些知识点的详细说明: 1. **C#语法基础** - 变量:包括数据类型(如int、float...
C#学习知识库2.0版是一个专门为学习C#设计的知识整理系统,旨在帮助初学者和有经验的开发者更好地理解和掌握C#的关键概念和特性。 1. **基础语法**: - 变量与数据类型:C#支持基本数据类型(如int, double, bool...
一、C#基础 1. 变量与数据类型:C#支持基本数据类型如int、float、double、bool,以及引用类型如string、object等。变量必须先声明后使用,遵循强类型检查。 2. 控制流:包括条件语句(if-else、switch)、循环...
从给定的C#基础测试题目中,我们可以总结出一系列重要的C#编程概念和知识点,这对于初学者理解和掌握C#语言的基本原理非常有帮助。以下是根据题目内容整理的关键知识点: ### 1. 抽象类与抽象方法 - **抽象类**:不...
本资料整理中包含的两个HTML文件很可能是关于C#异步调用的教程或示例,可能涵盖了上述知识点的详细解释和代码示例。通过学习这些文件,你可以深入理解并掌握C#异步编程的核心概念,从而在实际项目中有效地应用异步...
1. **C#基础语法**:C#的基本结构包括变量、数据类型、常量、运算符等。变量用于存储数据,数据类型决定了变量可以存储的数据种类。运算符则用于处理这些数据,如算术运算符(+,-,*,/)和逻辑运算符(&&,||,!)...
以下是我根据"自己整理的C#面试题"这个主题,结合C#的基础知识和常见面试题,为你详细解析的一些关键知识点: 1. **基础语法**:C#语法与C++和Java类似,但更注重安全性。包括变量声明(如int、string、bool等)、...
【C#基础知识面试题解析】 在C#编程中,掌握基础是至关重要的,尤其是在面试时。以下是一些常见的C#面试问题及解答: 66. 软件开发过程一般有几个阶段?每个阶段的作用? 软件开发通常包括五个主要阶段: 1. 需求...
【C# .NET面试题整理集合】 在C#和.NET技术领域中,面试通常会涵盖以下几个核心知识点: 1. **基础语法与数据类型**:理解C#的基本语法,包括变量声明、常量、数据类型(如int、string、bool、float等)以及它们的...
《C# in depth要点整理》是一份详细的C#编程指南,旨在帮助开发者深入理解这门强大的编程语言。本文档基于博主wjason在iteye博客上分享的内容,将关键知识点提炼成便于打印和学习的A4纸格式。以下是文档中涵盖的一些...
以下是对【标题】"c#提纲学习精华笔记整理"和【描述】中涉及的知识点的详细解释: 1. **控制台语句**: - `Write()`:在控制台上输出文本,但不会换行。 - `WriteLine()`:在控制台上输出文本,并在输出后自动...
1. **C#基础**: - 变量与数据类型:C#支持多种数据类型,包括整型、浮点型、字符型、布尔型等,还有引用类型如类、接口、数组。 - 控制流:如条件语句(if-else)、循环(for、while、do-while)和开关语句...
本文将深入探讨"C#相关API部分整理"中的关键知识点,包括W3CSchool的学习资源、Oracle数据库的交互以及.NET Framework 4.0类库。 首先,W3CSchool是一个知名的在线学习平台,提供了丰富的编程教程,包括C#。在这里...
理解这些基础知识对于编写任何C#程序都是至关重要的。 接着,`02 Class的设计.md`详细讲解了类的设计原理和实践。在C#中,类是面向对象编程的基础,它定义了一组属性(数据成员)和方法(行为),用于封装数据和...
以上内容涵盖了C#面试中的关键知识点和技术细节,包括.NET框架的基础、内存管理、设计模式以及一些重要的面试理论题。这些知识对于准备C#面试非常重要,能够帮助开发者深入理解.NET和C#的技术细节,并在实际开发工作...