(实现类 对象名 = new 类名)和(接口 对象名 = new 类名) 的区别,你知道么?

>>强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!

点击关注公众号,利用碎片时间学习

先讲一下接口回调。

interface People{
   void peopleList();
}
class Student implements People{
    public void peopleList(){
        System.out.println("I’m a student.");
    }
}
class Teacher implements People{
    public void peopleList(){
        System.out.println("I’m a teacher.");
    } 
}
public class Example{
    public static void main(String args[]){
    People a;             //声明接口变量
    a=new Student();      //实例化,接口变量中存放对象的引用
    a.peopleList();        //接口回调
    a=new Teacher();     //实例化,接口变量中存放对象的引用
    a.peopleList();       //接口回调
    }
}
//结果:
//I’m a student.
//I’m a teacher.

接口是为了实现多态。

接口是为了实现多态。

接口是为了实现多态。

然后就会有人疑惑,多态和不多态有什么区别么

接口 对象名1 = new 类名;

类名 对象名2 = new 类名;

在使用的时候,好像区别都不大。实例化对象调用方法,你就会发现使用接口 对象名 = new 类名; 方式实例化的对象只能调用接口中有的方法,而不能调用类中特有的方法。而使用类名 对象名 = new 类名;方式创建出来的对象可以调用所有的方法

但要是我不止一个实现类呢?如果A有实现类 B C D E。

用类名 对象名2 = new 类名;来写的话,我们要写5次,创建5个对象,如果用接口回调,我们只需要:

A a = new B();a.方法名();

a=new C();a.方法名()........来实现多态。

使用接口编程的好处是统一规范化。你会发现无论多少个实现类,无论这些实现类有什么不同,使用接口 对象名 = new 类名; 方式实例化对象都可以调用接口中定义的方法。

但是

接口回调的最大作用并不仅仅是为了统一规范化。这里举个例子:

public class work {
    public static void main(String[] args) {
        Phone a = new ClassA(); //Phone是父类,ClassA是实现类
        CallUp(a);
        a = new ClassB();
        CallUp(a);
 
    }
 
    public static void CallUp(Phone phone) {
     System.out.println(phone.call(phone.num));//num是父类的一个属性
    };
}

上面这里,Phone是一个手机接口,它可以代表所有的手机。

而ClassA和ClassB代表不同的手机型号,当然还有很多诸如iphone啊华为啊,小米啊之类的接口实现类。

现在我有一个打电话的功能叫做CallUp(),如果我们使用(实现类 a =new 实现类())的写法,那每个手机型号,我都需要写一个CallUp的方法来接收我的手机,每个手机的打电话方式(方法)都得不到统一。

如果我们使用接口回调,那我不管你是什么手机,反正只要能实现打电话的就行,所有的手机类型都可以放在Phone phone里面,我就不需要写很多次方法,毕竟手机型号这么多,难道我还得每一个手机型号都为他写一个方法?

由此可见,接口回调(接口 a = new 接口),不仅仅是为了规范,他最致命的优点是可以统一化管理所有子类,只需要提供一个共有的方法。

来源:blog.csdn.net/qq_39309348/

article/details/88061031

推荐:

主流Java进阶技术(学习资料分享)

(实现类 对象名 = new 类名)和(接口  对象名 = new 类名) 的区别,你知道么?
PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。“在看”支持我们吧!

原文始发于微信公众号(Java笔记虾):(实现类 对象名 = new 类名)和(接口 对象名 = new 类名) 的区别,你知道么?