xcj01
2021-02-23 18:58
采纳率: 100%
浏览 102
已采纳

怎么用接口的引用调用实现类中重写的方法,谢谢求解啦?

public class Teacher {
	private static Person per;
	public static void main(String[] args) {
		per.show();//输出的空指针异常
		     //怎么用接口的引用调用实现类中重写的方法
	}
}
interface Person {
	public abstract void show();
}
class Student implements Person{
	
	@Override
	public void show() {
		System.out.println("你好");
	}	
}

怎么用接口的引用调用实现类中重写的方法,是不是无法调用啊

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 眰恦.H 2021-02-23 22:36
    已采纳
    public class Teacher {
    	private static Person per;
    	public static void main(String[] args) {
    		Person person=new Student();
    		person.show();
    		
    	}
    }
    interface Person {
    	public abstract void show();
    }
    class Student implements Person{
    	
    	@Override
    	public void show() {
    		System.out.println("你好");
    	}	
    }
    

    Perso怎么用接口的引用调用实现类中重写的方法:

    兄弟加入这条语句

    Person person=new Student();
     person.show();

    Person作为接口被引用,而实际对象是new Student(),通过 对象.方法名(),实现重写

    1 打赏 评论
  • CherryOto 2021-02-25 02:30

    就通俗一点,突然想到的,不知道听不听的懂哈

    你爸爸(爸爸比喻为接口)有一件东西(东西比喻为方法)--即接口中的方法,别人来到家门口需要借它来用一用,但是你爸现在不在家也没空(接口,不可以直接创建类调用,只能通过实现类对象调用),但是你(你比喻为实现类)知道那东西在那里,所以只能由你来拿(拿比喻为调用)那件东西给别人.

    大佬看到了觉得我说的不行或者误人子弟的,说我一下哈,秒删

    打赏 评论
  • 西风逐白马 2021-02-23 19:34
    public class Teacher {
        private static Person per;
        public static void main(String[] args) {
            per = new Student();
            per.show();
        }
    }

    要将实现类对象赋给接口的引用,多态的概念,编译时会以实现类为模板创建对象,赋值给Person类型的变量per后就能够使用per来调用实现类Student的方法了

    1 打赏 评论

相关推荐 更多相似问题