Java中接口的多态详解

目录
  • 多态参数
  • 多态数组
  • 接口的多态传递现象
  • 总结

多态参数

就像我们现实生活中电脑的usb接口,我们既可以接受手机对象,又可以接受相机对象,等等,体现了接口的多态,查看以下代码

接口:

package InterfaceM;

public interface Interface {
    public void join();
    public void stop();
}

手机类:

package InterfaceM;

public class Phone implements Interface{

    @Override
    public void join() {
        System.out.println(this.toString()+"接入了电脑");
    }

    @Override
    public void stop() {
        System.out.println(this.toString()+"离开了电脑");
    }
}

相机类;

package InterfaceM;

public class Camera implements Interface {
    @Override
    public void join() {
        System.out.println(this.toString()+"接入了电脑");
    }

    @Override
    public void stop() {
        System.out.println(this.toString()+"离开了电脑");
    }
}

电脑类:

package InterfaceM;

public class Computer {
    public void work(Interface interF){
        interF.join();
        interF.stop();
    }

    public static void main(String[] args) {
        Camera camera=new Camera();
        Phone phone=new Phone();
        //将相机接入电脑
        Computer computer=new Computer();
        computer.work(camera);
        computer.work(phone);
    }
}

多态数组

在computer类型的数组中,我们即可以存放多种对象类型的数组。而且对应不同的数组对象,我们可以做出不同的事件。

在刚才的上述代码中我们在phone类中加入call功能,要求有插入phone时,调用call函数

package InterfaceM;

public class Computer {
    public void work(Interface interF){
        interF.join();
        interF.stop();
    }

    public static void main(String[] args) {
        Camera camera=new Camera();
        Phone phone=new Phone();
        //将相机接入电脑
        Interface []interf=new Interface[2];
        interf[0]=camera;
        interf[1]=phone;
        Computer computer=new Computer();
        for (int i=0;i<interf.length;i++){
            computer.work(interf[i]);
            if (interf[i]instanceof Phone){
                phone.call();
            }
        }
    }
}

接口的多态传递现象

如果我们运行以下代码,由于ih并没有被teacher继承,会发生报错,但是当我们用ig继承ih之后,我们可以发现这样就不会报错。这样体现出了多态的继承传递现象。

public class Test {
    public static void main(String[] args) {
        IG ig=new Teacher();
        IH ih=new Teacher();
    }
}
interface IH{}
interface IG{}
class Teacher implements IG{

}
public class Test {
    public static void main(String[] args) {
        IG ig=new Teacher();
        IH ih=new Teacher();
    }
}
interface IH{}
interface IG extends IH{}
class Teacher implements IG{

}

总结

到此这篇关于Java中接口的多态详解的文章就介绍到这了,更多相关Java多态内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java之理解多态详解

    目录 一.多态的概念 二.多态的特点 三.instanceof操作符 四.多态的转型 1.向上转型 2.向下转型 五.方法重写 六.小结 一.多态的概念        继承关系使一个子类能继承父类的特征,并且附加一些新特征.子类是它的父类的特殊化,每个子类的实例都是其父类的实例,但是反过来不成立.例如:每个圆都是一个几何对象,但并非每个几何对象都是圆.因此,总可以将子类的实例传给需要父类型的参数.参考案例如下: public class PolymorphismDemo{ /** Main me

  • java多态中的就近原则介绍

    直接上题: 题目补充: class A { int m; //-10 int getM() { return m; } int seeM() { return m; } } class B extends A { int m ; //10 int getM() { // System.out.println(this.m+"............"+super.m); return m+10; } } public class Test { public static void ma

  • 新手小白入门必学JAVA面向对象之多态

    目录 1. 概念 2 . 特点 3. 练习:多态入门案例 4. 多态的好处 5. 多态的使用 6. 练习:多态成员使用测试 7 拓展 7.1 设计汽车综合案例 7.2 多态为了统一调用标准 7.3 静态变量和实例变量的区别 7.4 向上转型和向下转型 总结 1. 概念 多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态. 可以把不同的子类对象都当作父类来看,进而屏蔽不同子类对象之间的差异,写出通用的代码,

  • Java多态的全面系统解析

    目录 Java基础知识(多态) 多态 多态的定义和存在的必要条件 多态的定义: 多态存在的三个必要条件 多态的案例 多态的好处 多态的弊端 引用类型转换 1.引用类型转换是什么,为什么需要它? 2.向上转型(自动转换) 3.向下转型(强制转换) 4.向下转型的问题 5.转型的异常 6.instanceof关键字 总结 茫茫人海千千万万,感谢这一秒你看到这里.希望我的能对你的有所帮助!共勉! 愿你在未来的日子,保持热爱,奔赴山海! Java基础知识(多态) 多态 因为在程序运行时才确定具体的类,这

  • java面向对象继承与多态介绍

    目录 一.概述 二.继承 2.1 继承的概述 2.2 继承机制 2.3 类中属性,方法的继承与覆盖 2.4 super 关键字 三. 多态 总结 一.概述 面向对象程序设计的三大原则是封装性,继承性和多态性.继承性是子类自动共享父类的数据和方法的机制,它是由类的派生功能体现的.继承具有传递性,使得一个类可以继承另一个类的属性和方法,这样通过抽象出共同的属性和方法组件新的类,便于代码的重用.而多态是指不同类型的对象接收相同的消息时产生不同的行为,这里的消息主要是对类成员函数的调用,而不同的行为是指

  • java多态实现电子宠物系统

    本文实例为大家分享了java多态实现电子宠物系统的具体代码,供大家参考,具体内容如下 效果实现: 代码实现: 1.主人类: public class Master {     //领养     public Pet adopt(String name){         if ("狗狗".equals(name)){             return new Dog();         }else if (name.equals("企鹅")){        

  • 详解Java面向对象编程之多态

    目录 Java面向对象编程之多态 一.对于多态的理解: 二.多态的实现方法 总结 Java面向对象编程之多态 一.对于多态的理解: 通俗点理解,多态其实就是一词多义,就是一种方法的多种状态,即不同的类对象,调用同一个方法名,有不同的实现效果,如下面这段代码块: public class Test { public static void main(String[] args) { Dog dog = new Dog("豆豆"); Cat cat = new Cat("花花&q

  • 浅谈Java封装、继承、多态特性

    目录 1.封装 2.继承 3.多态 4.上代码,效果运行放在最后 1.封装 什么是封装,谈谈自己对封装的理解,封装就是将类的信息(比如说类的属性)隐藏在类的内部,不允许外部程序直接访问.此时就要提到一个关键字private,他是一个权限修饰符,可以用来修饰成员(变量和方法),保护成员不被其他别的类来使用,如果需要被其他类来使用,那么需要提供对应的操作:a.提供get变量名()方法,用于获取成员变量的值 b.提供set变量名(参数),用于设置成员变量的值,同样也和get方法一样,都是用public

  • Java继承与多态的正确打开方式

    目录 一.概述 二.继承 2.1 继承的概述 2.2 继承机制 2.3 类中属性,方法的继承与覆盖 1.属性的继承与覆盖 2.方法的继承与覆盖 2.4 super 关键字 三. 多态 总结 一.概述 面向对象程序设计的三大原则是封装性,继承性和多态性.继承性是子类自动共享父类的数据和方法的机制,它是由类的派生功能体现的.继承具有传递性,使得一个类可以继承另一个类的属性和方法,这样通过抽象出共同的属性和方法组件新的类,便于代码的重用.而多态是指不同类型的对象接收相同的消息时产生不同的行为,这里的消

  • Java中接口的多态详解

    目录 多态参数 多态数组 接口的多态传递现象 总结 多态参数 就像我们现实生活中电脑的usb接口,我们既可以接受手机对象,又可以接受相机对象,等等,体现了接口的多态,查看以下代码 接口: package InterfaceM; public interface Interface { public void join(); public void stop(); } 手机类: package InterfaceM; public class Phone implements Interface{

  • Java中接口的深入详解

    目录 一.前言 二.接口 接口的格式 三.接口的特点 接口的使用 四.类与接口的关系 接口多重继承的好处 练习 总结 一.前言 前面我们说了抽象类的概述,我们对抽象类也有个认识和理解了,现在我们学习十分重要的内容接口,接口这个词比较的抽象,但其实也是十分好理解的. 二.接口 简单的说,接口就是一种被规范的标准,只要符合这个标准都可以通用,接口的表现在于对行为的抽象. 就好比插座,每个厂商生产的插座我们都可以用,这是因为他们有同一个标准,这里插座就是接口. 接口的格式 格式1: public in

  • java 中 阻塞队列BlockingQueue详解及实例

    java 中 阻塞队列BlockingQueue详解及实例 BlockingQueue很好的解决了多线程中数据的传输,首先BlockingQueue是一个接口,它大致有四个实现类,这是一个很特殊的队列,如果BlockQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒.同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态,直到BlockingQueue里有空间才会被唤醒继续操作.

  • java 中 ChannelHandler的用法详解

    java 中 ChannelHandler的用法详解 前言: ChannelHandler处理一个I/O event或者拦截一个I/O操作,在它的ChannelPipeline中将其递交给相邻的下一个handler. 通过继承ChannelHandlerAdapter来代替 因为这个接口有许多的方法需要实现,你或许希望通过继承ChannelHandlerAdapter来代替. context对象 一个ChannelHandler和一个ChannelHandlerContext对象一起被提供.一个

  • Java中isAssignableFrom的用法详解

    class1.isAssignableFrom(class2) 判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口.如果是则返回 true:否则返回 false.如果该 Class 表示一个基本类型,且指定的 Class 参数正是该 Class 对象,则该方法返回 true:否则返回 false. 1. class2是不是class1的子类或者子接口 2. Object是所有类的父类 一个例子搞定: package com.auuz

  • java 中Comparable与Comparator详解与比较

    java 中Comparable与Comparator详解 今天查看TreeMap的源码,发现其键必须是实现Comparable或者Comparator的接口时产生了一些兴趣,比如在TreeMap中的put方法分别对Comparable和Comparator接口分别进行处理.那么疑问就来了,Comparable和Comparator接口的区别是什么,Java中为什么会存在两个类似的接口?   Comparable和Comparator接口都是用来比较大小的,首先来看一下Comparable的定义

  • Java中对象的序列化详解及实例

     Java中对象的序列化详解及实例 把java对象转化为字节序列的过程称为对象的序列化. 把字节序列恢复为java对象的过程称为对象的反序列化. 对象序列化的用途: 1.把对象的字节序列永久的保存到硬盘上,通常存放在一个文件中 2.在网络上传送对象的字节序列化 void writeObject(Object obj) 方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中(将指定的对象写入 ObjectOutputStream.) void readObject()方法 从

  • 浅谈JAVA中输入输出流实例详解

    java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象.在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流....本文的目的是为大家介绍JAVA中输入输出流实例详解. 流的层次结构 定义:        java将读取数据对象成为输入流,能向其写入的对象叫输出流.结构图如下: 1.输入输出: 输入/输出(Input/Output)是指对某

  • java Future 接口使用方法详解

    java Future 接口使用方法详解 在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现. Future接口是Java标准API的一部分,在java.util.concurrent包中.Future接口是Java线程Future模式的实现,可以来进行异步计算. Future模式可以这样来描述:我有一个任务,提交给了Future,Future替我完成这个任务.期间我自己可以去做任何想做的事情.一段时间之后,我就便

  • C++/java 继承类的多态详解及实例代码

    C++/java 继承类的多态详解 学过C++和Java的人都知道,他们二者由于都可以进行面向对象编程,而面向对象编程的三大特性就是封装.继承.多态,所有今天我们就来简单了解一下C++和Java在多态这方面的不同. 首先我们各看一个案例. C++ //测试继承与多态 class Animal { public: char name[128]; char behavior[128]; void outPut() { cout << "Animal" << endl

随机推荐