多态 作为形参来使用
父类
package demon5;
// 狗类,父类
public class Dog {
public void work(){
System.out.println("狗在工作");
}
}
子类
package demon5;
// 牧羊犬
public class MuDog extends Dog {
@Override
public void work() {
System.out.println("牧羊犬放羊");
}
}
主人类
package demon5;
// 主人类
public class Master {
public void Act(Dog d){
// Dog d = new PoliceDog();
// Dog d = new Mudog();
// 如果子类中有重写work方法,那就会触发子类的work代码块
d.work();
}
}
测试类
package demon5;
public class test {
public static void main(String[] args) {
// 来两个狗
MuDog md = new MuDog();
PoliceDog pd = new PoliceDog();
SnowDog sd = new SnowDog();
// 来一个主人
Master m = new Master();
// 主人让狗工作
m.Act(md);
m.Act(pd);
m.Act(sd);
}
}
运行结果
多态 作为返回值
定义了一个销售
package demon5;
import java.util.Scanner;
// 售销
public class Saler {
// 销售的方法
public Dog sale(){
// 返回的变量
Dog d=null;
System.out.println("请问你需要买哪一种狗:");
// 提示用户输入
Scanner ipt = new Scanner(System.in);
// 用户选择
String choice = ipt.next();
// 根据选择不同,返还不同的狗
switch (choice){
case "1":
d = new PoliceDog();
break;
case "2":
d = new SnowDog();
break;
case "3":
d = new MuDog();
break;
}
return d;
}
}
测试类
// 实例化一个销售
Saler s = new Saler();
Dog d3 = s.sale();
System.out.println(d3.toString());
d3.work();
最终效果