使用父类做方法的返回值类型
使用父类做方法的返回值类型
需求:小男孩选一个小女孩玩游戏
package com.compain;
//定义小男孩;方法Find,传入父类的对象person,调用父类的方法
public class Boy {
public void Find(Person person){
person.name();
person.play();
}
}
package com.compain;
//定义父类,两个方法
public class Person {
public void name(){
System.out.println("女友类");
}
public void play(){
System.out.println("游戏");
}
}
package com.compain;
//定义小女孩小丽,定义两个方法;这里用到方法的重写
public class Girl01 extends Person{
public void name(){
System.out.println("小丽");
}
public void play(){
System.out.println("大冒险");
}
}
package com.compain;
//定义小女孩小丽,定义两个方法;这里用到方法的重写
public class Girl02 extends Person {
public void name(){
System.out.println("小红");
}
public void play(){
System.out.println("真心话");
}
}
package com.compain;
//定义一个游戏类,定义一个方法返回的是父类;传入属性名字,判断传入的字符是否相等;将对应的对象赋值给这里person的对象,personG
public class PlayGame {
public static Person getGame(String name){
Person personG= null;
if ("小红".equals(name)){
personG =new Girl02();
}if ("小丽".equals(name)){
personG =new Girl01();
}
return personG;//返回对应的对象给到boy定义的方法Find里面,进行调用想要的属性
}
}
package com.compain;
public class Test {
public static void main(String[] args) {
/*Girl01 girl01 = new Girl01();
Girl02 girl02 =new Girl02();*/
Boy boy = new Boy();
/*Person person =new Person();*/
/* person.name();*/
/*person.play();//父类作为子类的一个对象;调用其方法*/
Person personG = PlayGame.getGame("小丽");//此时将方法赋值给父类的属性PlayGame.getGame("小丽")= new Girl01();
//Person personG= new Girl01();//这里是将Girl01的对象赋值给personG;personG可以调用Girl01的所有属性
boy.Find(personG);//这里相当与调用Girl01的对象寻找对应的名字和方法
}
}

浙公网安备 33010602011771号