一、接口核心概念(原文整理 必背)
-
接口的作用:为类、结构体定义规范、定义标准。
-
接口中所有成员都是未实现的、抽象的(没有方法体、只有声明)。
-
类/结构体实现接口后,必须实现接口中所有的成员(属性、方法)。
-
接口不能被实例化。
-
接口支持多继承(多实现),一个类可以同时实现多个接口。
二、接口命名规范
接口名称约定以大写 I 开头,区分普通类,提高代码可读性。
示例:IBook、IPaper、IPeople
三、第一个接口:IBook 图书规范接口
代码
//书的接口
interface IBook
{
int Id { get; set; }
int Name { get; set; }
void F1();
}
解析
-
接口中可以定义:自动属性、方法
-
接口属性必须写 get; set;(读写规范)
-
接口方法
void F1()没有方法体,只有方法签名 -
含义:所有实现 IBook 接口的类,必须拥有 Id、Name 属性和 F1 方法
四、第二个接口:IPaper 纸张规范接口
代码
//纸张的接口
interface IPaper
{
string color { get; set; }
void F2();
}
解析
-
定义纸张规范:必须有颜色属性、F2 方法
-
接口成员默认 public,不用手动写访问修饰符
五、重点语法辨析(必考)
//:接口 叫【实现】
//:类 叫【继承】
//类可以实现多个接口
1. 冒号语法区别
子类 : 父类 → 继承(只能单继承)
类 : 接口 → 实现(可以多实现)
2. C# 核心规则
类 只能继承一个类
类 可以实现无数个接口
六、多接口实现演示:Book 类
代码
class Book : IBook, IPaper
{
public int Id { get ; set ; }
public int Name { get ; set ; }
public string color { get ; set ; }
public void F1()
{
}
public void F2()
{
}
}
逐行解析
Book : IBook, IPaper
Book 类 同时实现两个接口
必须一次性实现 IBook、IPaper 中所有未实现成员
- 实现了:
IBook 的 Id、Name、F1()
IPaper 的 color、F2()
- 接口实现必须使用 public(接口成员都是公开规范)
七、第三个接口:IPeople(用于重名成员演示)
代码
interface IPeople
{
string StudentId { get; set; }
}
定义学生编号属性规范
八、子类继承类 + 实现接口(重名成员核心考点)
代码
class SmallBook : Book, IPeople
{
// SmallBook 继承了Book类, Book里面已经有了StudentId属性,子类可以通过继承关系把属性继承过来
// 也就是SmallBook已经拥有StudentId
// 所以Ipeople接口StudentId属性没必要实现
// 如果想重新实现、覆盖,可以用 new 关键字进行隐藏
public new string StudentId { get; set; }
}
核心原理超详细解析
1. 类的关系
SmallBook 继承 Book 类 + 实现 IPeople 接口
2. 为什么不用重复实现接口属性?
IPeople 要求必须有 StudentId 属性
父类 Book 中已经手写了 StudentId
子类 SmallBook 继承了父类的 StudentId
等价于:子类已经拥有接口要求的成员,自动满足接口规范,不用重写
3. new 关键字作用(考试重点)
如果子类想要:不使用父类继承的属性,自己重新定义一个全新的同名属性
需要加 new 关键字:隐藏父类同名成员
形成:子类优先使用自己的 StudentId,和父类互不干扰
九、接口满分总结(简答题直接背)
1. 接口特点
① 接口是行为规范、标准,成员都是抽象、未实现的;
② 接口不能实例化;
③ 接口支持多实现,类只能单继承;
④ 类实现接口,必须实现接口所有成员;
⑤ 接口成员默认 public,不能写访问修饰符。
2. 继承 vs 实现
类 : 父类 → 继承(单继承)
类 : 接口 → 实现(多实现)
3. 父类已有接口成员的规则
子类继承父类 + 实现接口时,如果父类已经实现了接口所需成员,子类无需重复实现;若需要重新定义,使用 new 关键字隐藏父类成员。
十、终极背诵口诀
接口是规范,无体不能 new
类继单一父,接口可多补
父有子不用,重写 new 藏父组