C#程序设计 第3章C#面向对象编程
C# 程序设计 第3章 C#面向对象编程
接口 什么是接口 重点 接 接口的使用方法 如何使用实现了某接口的对象 显式 如何继承多个接口 接口和 接口与抽象类的比较 嵌套类和分部类
2 显式和隐式接口 接口 ★ 接口的应用 接口和抽象类的区别 什么是接口 重点 接口的使用方法 如何使用实现了某接口的对象 如何继承多个接口 接口与抽象类的比较 嵌套类和分部类
IComparable接口 /实现IComparable接▣的CompareTo方法 public int CompareTo(Object obj) { if (!Stydentteobj as Student; thrwgumentException(“参数必须为Student 类的廓础身常 return this.name.CompareTo(s.name ) Student st=(Student)obj; return this.name.CompareTo(st.name ) 3
3 IComparable接口 什么是接口 接口的声明 接口成员 接口的实现 一系列需要实现的功能的定义 [接口修饰符] interface 接口名 [: 基接口] { 接口体; } int CompareTo (Object obj); class Student : IComparable //实现IComparable接口的CompareTo方法 public int CompareTo ( Object obj) { } if (!(obj is Student) { throw new ArgumentException (“参数必须为Student 类的实例"); } Student st= (Student) obj; Student s = obj as Student; if(s == null) //抛出异常 return this.name.CompareTo(s.name ); return this.name.CompareTo(st.name );
IComparable接口 ■s检查对象是否与指定类型兼容 if(对象s类型)f=(类型)对象; 判断对象是否是某种类型, 返回true和false as用于在兼容的引用类型之间执行转换 类型f仁对象as类型: 一种类型转换方式 if (f==null) Console.WriteLine("不是有效的类型。"); else a.0cc 转换失败返回值为空
4 IComparable接口 ▪ is 检查对象是否与指定类型兼容 if ( 对象 is 类型 ) f=(类型) 对象; 判断对象是否是某种类型, 返回true和false ▪ as 用于在兼容的引用类型之间执行转换 类型 f= 对象 as 类型; if (f==null) Console.WriteLine("不是有效的类型。"); else . 转换失败返回值为空 一种类型转换方式
使用自定义接口 以实现接口的对象作为参数 1、接口作为参数使用 public void Test IPersonallncome income) income.DisplayIncome() 无论是哪中类型的对象, 这里都不需要变化 Test(new Manager("张三",30,3000,3000))月 2、接口作为返回值使用 private IPersonallncome CreatelPersonallncome (string type){ switch(type) { case“Manager": f=new Manager("张三",30,3000,3000);break; 返回一个实现该 接口的对象 f.getLength() return f 5
5 使用自定义接口 1、接口作为参数使用 public void Test ( IPersonalIncome income) { income.DisplayIncome(); } 无论是哪中类型的对象, 这里都不需要变化 2、接口作为返回值使用 Test( new Manager ("张三",30,3000,3000) ); private IPersonalIncome CreateIPersonalIncome (string type){ switch (type) { case “Manager ": f = new Manager ("张三",30,3000,3000) ; break; . } return f } 返回一个实现该 接口的对象 f.getLength() 以实现接口的对象作为参数
接口 接口的应用 显式和隐式接口 接口和抽象类的区别 嵌套类和分部类
6 显式和隐式接口 接口 接口的应用 ★ 接口和抽象类的区别 嵌套类和分部类
一个类实现多个接口。如果两个接口中有不 同成员具有相同的名字,如何解决冲突? 接口的显式实现 O ■显式实现是通过使用接口的完全限定名来实现接口成员 的 ■显式接口成员实现不能使用任何修饰符 ■显示接口只能通过接口的对象来使用,不能通过类的实 例进行访问。 ■接口的隐式实现 ■实现接口成员的方法或属性等必须是public和非静态的 ■类实现一个接口时,必须实现整个接口
7 接口实现 ▪ 接口的显式实现 ◼ 显式实现是通过使用接口的完全限定名来实现接口成员 的 ◼ 显式接口成员实现不能使用任何修饰符 ◼ 显示接口只能通过接口的对象来使用,不能通过类的实 例进行访问。 ▪ 接口的隐式实现 ◼ 实现接口成员的方法或属性等必须是public和非静态的 ◼ 类实现一个接口时,必须实现整个接口。 一个类实现多个接口。如果两个接口中有不 同成员具有相同的名字,如何解决冲突?
接口的使用及继承 如何使用接口 在确定对象实现了某个特定接口之后,就可以引用该接口。 咒可以把对象类型强制转换为接口类型。 ■继承多个接口 ■单继承;但可以实现多个接口。 咒基类放在第一位 ■继承接口的接口 ■接口可以继承一个或多个其他接口。 ■接口继承它父接口所有成员,并且接口用户必须实现所 有被继承接口的所有成员
8 接口的使用及继承 ▪ 如何使用接口 ▪ 继承多个接口 ◼ 单继承;但可以实现多个接口。 ▪ 继承接口的接口 ◼ 接口可以继承一个或多个其他接口。 ◼ 接口继承它父接口所有成员,并且接口用户必须实现所 有被继承接口的所有成员。 在确定对象实现了某个特定接口之后,就可以引用该接口。 可以把对象类型强制转换为接口类型 。 基类放在第一位
设计接口的注意事项 一个设计良好的接口可以包含一个紧密相关的功能集合, 这些功能定义了一个特定行为。 ■可以为接口开发新的增强实现,而不破坏现有的代码 。接口不变性 ■ 接口使用的场合 ·不需要从父类继承实现 ■在基类不同的类之间实现多态性 9
9 设计接口的注意事项 ▪ 一个设计良好的接口可以包含一个紧密相关的功能集合, 这些功能定义了一个特定行为。 ▪ 可以为接口开发新的增强实现,而不破坏现有的代码 ▪ 接口不变性 ▪ 接口使用的场合 ◼ 不需要从父类继承实现 ◼ 在基类不同的类之间实现多态性
接口 接口的应用 显式和隐式接口 接口和抽象类的区别 嵌套类和分部类 10
10 显式和隐式接口 接口 接口的应用 ★ 接口和抽象类的区别 嵌套类和分部类