C#编程技术基础 教学课件 ppt 作者 武汉厚溥教育科技有限公司 8_第八章-抽象类和接口

上传人:E**** 文档编号:89494200 上传时间:2019-05-25 格式:PPTX 页数:25 大小:443.92KB
返回 下载 相关 举报
C#编程技术基础 教学课件 ppt 作者 武汉厚溥教育科技有限公司 8_第八章-抽象类和接口_第1页
第1页 / 共25页
C#编程技术基础 教学课件 ppt 作者 武汉厚溥教育科技有限公司 8_第八章-抽象类和接口_第2页
第2页 / 共25页
C#编程技术基础 教学课件 ppt 作者 武汉厚溥教育科技有限公司 8_第八章-抽象类和接口_第3页
第3页 / 共25页
C#编程技术基础 教学课件 ppt 作者 武汉厚溥教育科技有限公司 8_第八章-抽象类和接口_第4页
第4页 / 共25页
C#编程技术基础 教学课件 ppt 作者 武汉厚溥教育科技有限公司 8_第八章-抽象类和接口_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《C#编程技术基础 教学课件 ppt 作者 武汉厚溥教育科技有限公司 8_第八章-抽象类和接口》由会员分享,可在线阅读,更多相关《C#编程技术基础 教学课件 ppt 作者 武汉厚溥教育科技有限公司 8_第八章-抽象类和接口(25页珍藏版)》请在金锄头文库上搜索。

1、第六章,抽象类和接口,子类可以继承父类的非私有成员 不能继承父类的构造方法,子类构造方法会自动调用父类构造方法,并且父类构造方法先执行,再执行子类构造方法。使用base关键字显示调用父类构造方法。base关键字还可以访问父类成员 protected访问修饰符修饰的成员可以被子类和本身访问,其他类访问不了 密封类,sealed关键字修饰的类,表示不能被其他类继承。 多态是指二个或多个不同的类,对同一方法的不同代码实现 virtual、override关键字,子类重写父类的虚方法 父类对象可以引用子类实例,并且调用子类重写的方法,回顾,理解抽象类 理解接口的用途和编写方法 接口作为参数的作用 接口

2、和抽象类的区别,本章目标,抽象类和抽象方法3-1,abstract class Person public abstract void SayHi(); ,抽象方法,一个没有实现的方法,有抽象方法的类必然是抽象类,抽象类用来列举一个类所需要的行为 抽象类不明确提供具体实现方法 抽象类必须由其子类实现它的抽象方法(除非子类也具有抽象性),抽象类和抽象方法3-2,abstract class ClassOne /类实现 ,访问修饰符,派生类的基类,不能实例化,抽象类和抽象方法3-3,abstract class Base / 成员变量 int basevar; / 成员函数 abstract vo

3、id base_fun1(parameters); / 无法实现 . ,抽象方法,class Derived : Base / 成员变量 int derivedvars; / 成员函数 override void Base_fun1(parameters) / 实际实现 . ,抽象类,派生类,提供,重写方法,原型,必须重写,实现抽象方法,使用override实现抽象方法,public override void SayHi() /具体实现内容 ,重写,实现抽象方法,抽象类示例,演示,using System; namespace Example_5 abstract class ABC pub

4、lic abstract void AFunc(); public void BFunc() Console.WriteLine(“这是一个非抽象方法!“); class Derv : ABC public override void AFunc() Console.WriteLine(“这是一个抽象方法! “); ,抽象类 不能实例化,派生类 重写方法,static void Main(string args) Derv objB = new Derv(); objB.AFunc(); objB.BFunc(); ,抽象类示例,abstract class MyAbs public abst

5、ract void AbMethod(); /派生类 class MyClass : MyAbs public override void AbMethod() Console.WriteLine(“在 MyClass 中实现的抽象方法“); /派生自 MyClass 的子类 class SubMyClass:MyClass public void General() /未实现 AbMethod 抽象方法 Console.WriteLine(“在 SubMyClass 中未实现的抽象方法 “); ,static void Main(string args) SubMyClass objSubC

6、lass = new SubMyClass(); objSubClass.General(); ,里氏替换原则,/ Student stu1 = new Student(); Student stu2 = new Student(); List person = new List(); person.Add(stu1); person.Add(stu2); /,子类对象可以替换父类,里氏替换原则(LSP),子类的对象能够替换其父类 父类对象不能够替换子类 父类的方法都要在子类中实现或者重写,is与as操作符,is 检查对象是否与指定类型兼容,if (personi is Student),判断

7、person集合的元素是否是Student对象,as 用于在兼容的引用类型之间执行转换,for (int i = 0; i Students.Count; i+) Student stu = Studentsi as Student; Console.WriteLine(stu.Name); ,转换失败返回值为空,一种类型转换方式,虚方法与抽象方法,接口2-1,class IBase void method1(); int method2(); int method3(float); /没有实现 . ,接口,interface,只有方法声明,没有实现,接口2-2,public interfac

8、e IPict int DeleteImage(); void DisplayImage(); ,隐式声明为 public,无访问修饰符,示例2-1,演示,public class MyImages : IPict /第一个方法的实现 public int DeleteImage() Console.WriteLine(“DeleteImage 实现!“); return(5); /第二个方法的实现 public void DisplayImage() Console.WriteLine(“DisplayImage 实现!“); ,static void Main(string args) M

9、yImages objM = new MyImages(); objM.DisplayImage(); int t = objM.DeleteImage(); Console.WriteLine(t); ,派生自 IPict 接口,示例2-2,public interface IPict int DeleteImage(); void DisplayImage(); public class MyImages : BaseIO, IPict public int DeleteImage() Console.WriteLine(“DeleteImage 实现!“); return(5); pub

10、lic void DisplayImage() Console.WriteLine(“DisplayImage 实现!“); ,public class BaseIO public void Open() Console.WriteLine(“BaseIO 的 Open 方法“); ,static void Main(string args) MyImages objM = new MyImages(); objM.DisplayImage(); int val = objM.DeleteImage(); Console.WriteLine(val); objM.Open(); ,多重接口实现

11、,C# 不允许多重类继承 但 C# 允许多重接口实现 这意味着一个类可以实现多个接口,多重接口实现示例,public interface IPictManip void ApplyAlpha(); /第二个接口 public interface IPict int DeleteImage(); void DisplayImage(); public class BaseIO public void Open() Console.WriteLine(“BaseIO 的 Open 方法“); ,static void Main(string args) MyImages objM = new My

12、Images(); objM.DisplayImage(); objM.DeleteImage(); objM.Open(); objM.ApplyAlpha(); ,显式接口实现,在 C# 中,只要不发生命名冲突,就完全可以允许多重接口实现,public interface IPictManip void ApplyAlpha(); ,public interface IPict void ApplyAlpha(); ,public class MyImages : BaseIO, IPict, IPictManip public int ApplyAlpha() . . ,?,使用显式接口

13、实现,显示接口实现示例,public class MyImages : BaseIO, IPict, IPictManip public int DeleteImage() Console.WriteLine(“DeleteImage 实现!“); return(5); public void ApplyAlpha() Console.WriteLine(“ApplyAlpha 实现!“); void IPict.DisplayImage() Console.WriteLine(“DisplayImage 的 IPict 实现“); void IPictManip.DisplayImage()

14、 Console.WriteLine(“DisplayImage 的 IPictManip 实现“); ,显式接口实现,static void Main(string args) MyImages objM = new MyImages(); IPict Pict = objM; /IPict 引用 Pict.DisplayImage(); IPictManip PictManip = objM; /IPictManip 引用 PictManip.DisplayImage(); ,示例,演示:示例 13,public interface IPict int DeleteImage(); pub

15、lic interface IPictManip void ApplyAlpha(); void DisplayImage(); /继承多重接口 public interface IPictAll:IPict, IPictManip void ApplyBeta(); ,public class MyImages:IPictAll public int DeleteImage() Console.WriteLine(“DeleteImage 实现!“); return(5); public void ApplyAlpha() Console.WriteLine(“ApplyAlpha 实现!“); public void ApplyBeta() Console.WriteLine(“ApplyBeta 实现!“); public void DisplayImage() Console.WriteLine(“DisplayImage 实现!“); ,static void Main(string args) MyImages objM = new MyImages(); objM.DisplayImage(); in

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号