本文已参与「新人创作礼」活动,一起开启掘金创作之路。
父类类型作为方法的返回值实现多态
abstract class LOVE{
public abstract void love();
}
class one extends LOVE{
public void love() {
System.out.println("我喜欢你!");
}
//子类特有方法
public void run() {
System.out.println("999");
}
}
class two extends LOVE{
public void love() {
System.out.println("我爱你!");
}
//子类特有方法
public void run() {
System.out.println("666");
}
}
class ME{
public LOVE myLove(int n) {//58行
if(n==1) {
return new one();
}else {
return new two();
}
}
public void RUN(LOVE m) {
if(m instanceof one) {
one l=(one)m;//向下转型
l.run();
}else if(m instanceof two) {
two l=(two)m;
l.run();
}else {
System.out.println("one不能转为two,判断一下");
}
//m.run();父类引用不能调用子类特有方法
}
}
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
ME me=new ME();
System.out.println("1.one 2.two");
int n=in.nextInt();
LOVE q=me.myLove(n);//返回的虽然是父类类型,但实际是子类对象
q.love();
me.RUN(q);
}
}