unity3d游戏开发之方法隐藏、多态和析构函数等.doc
-
资源ID:70325544
资源大小:102KB
全文页数:9页
- 资源格式: DOC
下载积分:15金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
unity3d游戏开发之方法隐藏、多态和析构函数等.doc
一、 方法隐藏 如果子类方法的方法名和基类的方法名相同时,系统将隐藏基类同名方法,自动调用子类的同名方法二、 Virtual和override virtual 用在基类中,指定一个虚方法(属性),表示这个方法(属性)可以重写。 例如:public virtual void eat(); override 用在派生类中,表示对基类虚方法(属性)的重写。例如:public override void eat(); 代码举例:1. using System;2.3. using System.Collections;4.5.6.7. public class Animal8.9. 10.11. public Animal() 12.13. public virtual void eat()14.15. 16.17.18.19. 20.21. 22.23.24.25. public class dog:Animal26.27. 28.29. public override void eat()30.31. 32.33. /如果父类的虚方法中有我们需要的数据,可以在子类的覆盖方法中调用它:34.35. /base.eat();36.37. Console.WriteLine("狗吃骨头");38.39. 40.41. 42.43.44.45. public class cat:Animal46.47. 48.49. public override void eat()50.51. 52.53. Console.WriteLine("猫吃鱼");54.55. 56.57. 58.59.60.61. public class panda:Animal62.63. 64.65. public override void eat()66.67. 68.69. Console.WriteLine("熊猫吃竹子");70.71. 72.73. 74.75.76.77. public class MainFun78.79. 80.81. static void Main()82.83. 84.85. Animal anim = new Animal3;86.87. anim0 = new dog();88.89. anim1 = new cat();90.91. anim2 = new panda();92.93. anim0.eat();94.95. anim1.eat();96.97. anim2.eat();98.99. 100.101. 运行结果: 总结:1.virtual关键字和override关键字是成对出现的,否则是语法错误。2.派生类可以通过将重写声明为 sealed 来停止虚拟继承。这需要在类成员声明中的 override 关键字前面放置 sealed 关键字。3.在子类中重写基类中的虚方法时,可以使用base关键字调用基类中的虚方法。 三、 多态 通过继承,一个类可以用作多种类型:可以用作它自己的类型、任何基类型,或者在实现接口时用作任何接口类型。这称为多态性。C#中的每种类型都是多态的。类型可用作它们自己的类型或用作 Object 实例,因为任何类型都自动将 Object 当作基类型。 多态性不仅对派生类很重要,对基类也很重要。任何情况下,使用基类实际上都可能是在使用已强制转换为基类类型的派生类对象。基类的设计者可以预测到其基类中可能会在派生类中发生更改的方面。 例如,表示汽车的基类可能包含这样的行为: 当考虑的汽车为小型货车或敞篷汽车时,这些行为将会改变。基类可以将这些类成员标记为虚拟的,从而允许表示敞篷汽车和小型货车的派生类重写该行为。 多态是父类使用子类的方法 四、 私有构造函数 用关键字private修饰的构造函数就是私有构造函数。 五、 析构函数 析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。 析构函数的声明:1. class Car2.3. 4.5. Car() / destructor6.7. 8.9. / cleanup statements.10.11. 12.13. 该析构函数隐式地对对象的基类调用 Finalize。 这样,前面的析构函数代码被隐式地转换为以下代码: 1. protected override void Finalize()2.3. 4.5. try6.7. 8.9. / Cleanup statements.10.11. 12.13. finally14.15. 16.17. base.Finalize();18.19. 20.21. 这意味着对继承链中的所有实例递归地调用 Finalize 方法(从派生程度最大的到派生程度最小的)。 析构函数和构造函数的区别:构造函数和析构函数是在类体中说明的两种特殊的成员函数。 构造函数的功能是在创建对象时,使用给定的值来将对象初始化。 析构函数的功能是用来释放一个对象的。在对象删除前,用它来做一些清理工作,它与构造函数的功能正好相反。这篇文章来自狗刨学习网