JAVA之多态思想

来源:百度知道 编辑:UC知道 时间:2024/06/22 21:29:02
多态:比如一个两性的人,有时是男的,有时是女的!
问题是:什么时候是男的,想反。。。
解答:当针对女性的时候,(它) 是男性,当针对男性的时候(它)是女性。
限制:它不能自已跟自己发生性关系!

定义父类Human,实现所有人类共有的特性。
定义接口SexBehavior,方法sex();
public class SexAsMan implements SexBehavior{
public void sex(){
System.out.println("Fuck women");
}
}
public class Man extends Human{
public Man(){
SexBehavior behavior = new SexAsMan();
behavior.sex();
}
}

能有人讨论太好了,ukong_我看了你写的代码,感觉有个地方不妥,你的做法是行为来自Human接口并由子类自行实现而来,但这种做法依赖于‘实现’,被实现绑的死死的,没办法更改行为(除非写更多代码)。而如果让Human成为一个具体类,可以让衍生的特定类(如Man)具有Human共同的属性和方法。Human的子类将使用SexBehavior所表示的行为,所以实际的‘实现’不会绑死在Human子类中。
在OO系统中,类代表的东西一般都是既有状态又有方法的,但在这里,碰巧‘东西’是个行为,但即使是行为,也仍然可以有状态和方法,例如:发生关系的主动与被动,具体姿势,做爱方式等。
个人想法,多多指正。

//属性接口
public interface Human{
void sexBehavior();
}
//动作类
public class Behavior {
private Human human;
Behavior(Human human){
this.human=human;
}
void Sex() {
human.sexBehavior();
}

}
//定义男人,女人
public class Man extends Human{
public Man(){