近这段时间比较空闲,回顾了一下基础的东西,温故而知新嘛!!
里就先谈一下面向对象最基础而且最重要的类型之一“委托”。下面用一个比较容易理解的例子来方便理解:
信大家都看过《黑客帝国》吧,里面有一个镜头是把直升飞机的驾驶程式下载到人的大脑中,那个人立即就会驾驶直升飞机了(呵呵,如果现在有这样的科技就好了,什么都不用学)。嗯,其实我们也可以把那个直升飞机的驾驶程式(就是直升飞机的驾驶方法)理解成是一个委托的实例。当把程式下载到人的大脑,就是向人脑传递直升飞机的驾驶方法,这就好比调用一个带有委托类型参数的方法 。
我们再想像一下,如果人类只需要下载了某种机器的“驾驶程式”就立即会操作这种的器的话,其他动物是不是也可以呢!
唉,罗嗦了这么多,还是看一下例子比较实际。
下面定义了两个类:一个是驾驶员类,一个是驾驶方法类。
在DriveClass类中我们可以定义所有动物为驾驶员;而各种机器的驾驶方法也封装在ProgramClass类里面。
那每个驾驶员怎么能够轻易的驾驶每种机器呢,奥妙就在下面:
这里定义了一个用来封装驾驶方法的委托,如果需要传递某种机器的驾驶方法,就需要实例化它的一个委托,例如要封装一个汽车的驾驶方法:
好,现在尝试一下让猴子驾驶汽车吧:
"pd”就是下载到猴脑的汽车驾驶方法,这样猴子才能驾驶汽车。
上面代码输出:
猴子驾驶:
哈哈,这样就可以驾驶汽车了!
下面给出完整代码
运行以上代码,可以得到:
人类驾驶:
哈哈,这样就可以驾驶汽车了!
哈哈,这样就可以驾驶轮船了!
哈哈,这样就可以驾驶飞机了!
猴子驾驶:
哈哈,这样就可以驾驶汽车了!
哈哈,这样就可以驾驶轮船了!
哈哈,这样就可以驾驶飞机了!