【老乔】前两天给晚班学生将多态,想起时老师讲的一个笑话。说他们上大学的时候,有一个比他们大三届的学长留校当老师了,结果头一年就和高两届的学生中三个女生谈了恋爱,再一年又与高一届的两个女生谈,到他们这届又开始追求时老师的一个好朋友。时老师劝她同学说:“这样的人你怎么还答应他呢?”她同学说:“我也跟他说,咱们这样师生恋不好吧?他激动地说:老师也是人哪!就只好答应了。”于是“老师也是人”这句话成为一时之传。
“老师也是人”这句话正好说出了对象的一种非常重要的特性,即一个具体的对象可以有多种身份。当他在一种场合下,以一种身份出现的时候,可以干某些事情;在另外一个场合,以另外一种身份出现的时候,就可以干另外一件事情。人是同一个人,但是换上不同的身份,就可以干不同的事情了。举例如下:
//普通人
class 人
{
//男大当婚,都要谈恋爱
public void 谈恋爱(人 mm){
System.out.println("花前月下");
}
};
//老师也是人啊!!!
class 老师 extends 人
{
//首要职责是传道授业了
public void 讲课(){
System.out.println("为人师表");
}
//当然也要谈恋爱,并且谈法和普通人不同
public void 谈恋爱(人 mm){
System.out.println("道貌岸然");
}
}
//看看到底怎么回事
class Test
{
public static void main(String[] args)
{
//有人找来一个美女
人 美女 = new 人();
//介绍给武宇
人 武宇 = new 老师(); //多态的声明
/*武宇就开始谈恋爱。注意,刚开始美女还不知道武宇的职业的,但是已经注意到他谈恋爱与众不同了*/
武宇.谈恋爱(美女); //输出:道貌岸然,而不是:花前月下//虚方法调用
//介绍人告诉美女,武宇是个老师
老师 武老师 = (老师)武宇; //强制造型成他的职业面目
//这就是我们每天都遇见的武老师了
武老师.讲课(); //输出:为人师表
}
};
本人后注:武宇,武大师不是别人,正是本人现在的老师,新东方一博的金牌讲师