学习知识:多态的两种应用方法(作为形参,作为返回值)
main.java:
public class main {
public static void main(String[] args){
person ps = new person();
ps.look(new Musician());
ps.look(new Painter());
ps.look(new Coder());
ps.look(ps.getwho("Musician"));
}
}
person.java:
public class person {
void show(){
System.out.println("Who is he?");
}
private void show1(){
System.out.println("person's show");
}
//方法定义为private的时候,子类无法重写父类的该方法
void look(person person){
person.show1();
person.show();
}
// 第一种用法:作为传入的形参
person getwho(String career){
if( career.equals("Musician")){
return new Musician();
} else if (career.equals("Coder")) {
return new Coder();
} else {
return new Painter();
}
}
//第二种用法:作为返回值
}
Musician.java:
public class Musician extends person{
void show(){
System.out.println("音乐家在弹钢琴。");
}
void show1(){
System.out.println("Musician's show");
}
}
Painter.java:
public class Painter extends person{
void show(){
System.out.println("画家在画画。");
}
}
Coder.java:
public class Coder extends person{
void show(){
System.out.println("程序员在敲代码。");
}
}
运行结果: