欢迎来到unity学习、unity培训、unity企业培训教育专区,
这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。
一:多态
封装、继承、多态,面向对象的三大特性,前两项理解相对容易,但要理解多态,特别是深入的了解,对于初学者而言可能就会有一定困难了。我一直认为学习OO的最好方法就是结合实践,封装、继承在实际工作中的应用随处可见,但多态呢?也许未必,可能不经意间用到也不会把它跟“多态”这个词对应起来。在此抛砖引玉,大家讨论,个人能力有限,不足之处还请指正。
之前看到过类似的问题:如果面试时主考官要求你用一句话来描述多态,尽可能的精炼,你会怎么回答?当然答案有很多,每个人的理解和表达不尽相同,但我比较趋向这样描述:不同继承者调用同一方法产生不同结果就叫多态!
这个例子最好帮助理解多态:
1.public class Animal
2.{
3.public virtual void Eat()
4.{
5.Console.WriteLine("Animal eat");
6.}
7.}
8.
9.public class Cat : Animal
10.{
11.public override void Eat()
12.{
13.Console.WriteLine("Cat eat");
14.}
15.}
16.
17.public class Dog : Animal
18.{
19.public override void Eat()
20.{
21.Console.WriteLine("Dog eat");
22.}
23.}
24.
25.class Tester
26.{
27.static void Main(string[] args)
28.{
29.Animal[] animals = new Animal[3];
30.
31.animals[0] = new Animal();
32.animals[1] = new Cat();
33.animals[2] = new Dog();
34.
35.for (int i = 0; i < 3; i++)
36.{
37.animals[i].Eat();
38.}
39.}
40.}
二:索引器
索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的。
索引器和数组比较:
(1)索引器的索引值(Index)类型不受限制
(2)索引器允许重载
(3)索引器不是一个变量
索引器和属性的不同点
(1)属性以名称来标识,索引器以函数形式标识
(2)索引器可以被重载,属性不可以
(3)索引器不能声明为static,属性可以
索引器的格式为
[修饰符] 数据类型 this[索引类型 index]
{
get{//获得属性的代码}
set{ //设置属性的代码}
}
例子:
1.sing System;
2.using System.Collections;
3.public class IndexerClass
4.{
5.private string[] name = new string[2];
6.
7.//索引器必须以this关键字定义,其实这个this就是类实例化之后的对象
8.public string this[int index]
9.{
10.//实现索引器的get方法
11.get
12.{
13.if (index < 2)
14.{
15.return name[index];
16.}
17.return null;
18.}
19.
20.//实现索引器的set方法
21.set
22.{
23.if (index < 2)
24.{
25.name[index] = value;
26.}
27.}
28.}
想了解更多到http://www.gopedu.com/