xcj01
xcj01
采纳率100%
2021-02-23 18:58

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

已采纳
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条回答

  • weixin_55478417 眰恦.H 2月前
    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 评论 复制链接分享
  • weixin_43415461 CherryOto 2月前

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

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

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

    点赞 评论 复制链接分享
  • qq_42118617 西风逐白马 2月前
    public class Teacher {
        private static Person per;
        public static void main(String[] args) {
            per = new Student();
            per.show();
        }
    }

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

    点赞 评论 复制链接分享