精华内容
下载资源
问答
  • 浅谈 Java接口作用和意义 浅谈 java接口作用和意义 什么是 java接口其实接口的概念较为抽象可以 理解为接口是一系列方法和特征的集合方法和特征是类的 组成部分 如果从编程的角度而言 java接口可以...
  • java接口意义

    万次阅读 多人点赞 2019-05-23 16:51:55
    接口的最主要的作用是达到统一访问,就是在创建对象的时候用接口创建,【接口名】 【对象名】=new 【实现接口的类】,这样你像用哪个类的对象就可以new哪个对象了,不需要改原来的代码,就你的US...

    1. java当中继承一个接口,要重写他的方法的话,那为什么还要多此一举的去实现一个接口呢?

    直接把方法写在类当中不就可以了?
    就是说去掉类名后面的Implements 接口 ,可以不可以呢?

    统一访问:
    接口的最主要的作用是达到统一访问,就是在创建对象的时候用接口创建,【接口名】 【对象名】=new 【实现接口的类】,这样你像用哪个类的对象就可以new哪个对象了,不需要改原来的代码,就和你的USB接口一样,插什么读什么,就是这个原理。如果我用接口,one.method1(); 那样我new a();就是用a的方法,new b()就是用b的方法

    这个就叫统一访问,因为你实现这个接口的类的方法名相同,但是实现内容不同。

    多重继承:
    另外java用接口还有一个好处,就是java不支持多重继承,但是可以实现多个接口,这个在某种程度上可以看做进行多重继承的一种办法。

    首先这样写是肯定没有错误的,在我们初期学期的时候还没有体现到接口的价值。但是当我们在做项目时,运用接口以后会很方便。因为接口里面只有简单的方法的声明。或者一些公用的东西。大家都去实现它的话比每次重新定义要方便很多。
    对于接口的作用,在一些小的项目上,很难看出其发挥的优势。这就使一些经常的做小项目的开发人员,做时间久了就感觉不到它有什么好的,有时候写起来还麻烦,干脆不用了。其实,在一些大项目上,接口的作用是发挥地相当的明显的。

    比如:
    如果你开发业务逻辑代码,当你好不容易的实现了它全部的功能,突然用户需求要改,你在修改你代码的同时,调用你代码的其它人也会改,如果代码关联性强的话,会有很多人都要改动代码,这样一来二去,程序会变得相当的不稳定,而且可能还会出现更多的新Bug,所有人都可能会陷入混乱。

    但如果使用接口的话,在你使用它之前,就要想好它要实现的全部功能(接口实际上就是将功能的封装)。确定下这个接口后,如果用户需求变了,你只要重新写它的实现类,而其它人只会调用你的接口,他不管你是怎么实现的,它只需要接口提供的功能。这样,很可能只需要把你的代码修改就可以了,其他人什么都不用做。

    同时:
    这样做的话,使得开发人员能够分工明确,只要确定下来接口了,就可以同时进行开发,提高开发效率。另外,使用接口还有使用方便,可读性强,结构清晰等优点。

    定义一个接口,可以有多种实现。

    解耦,可扩展这是设计接口的主要原因之一

    2. 为什么接口可以多继承,而类不可以?

    如果有两个父类,两个父类里有一个相同的方法,那么作为子类应该怎么继承这个方法?父类1的还是父类2的?
    但是实现多个接口则没问题,因为不管哪个接口,调用的都是同一个实现,因为只有方法名!
    而且单继承的目的之一,就是降低复杂度,减少维护难度

    • 继承:描述事物的自然属性和行为的复用。
    • 接口:描述事物的社会属性和行为的复用。

    因为继承父类包括实现,继承接口只包括接口,就是这样。
    接口定义的是行为,比如走,很多对象都可以实现这个行为
    但类定义的是对象的属性和具体行为

    class 负责实现, interface负责接口;
    多继承最麻烦的问题就是冲突, 冲突主要体现在 实现的时序和传入参数, 传出参数。这几个方面对于实现来说,父类发生时序问题时,使得语言本身变得无比复杂,而多继承问题在实现本身是可以通过很多方式解决的。而对于接口来说,传入参数冲突是overload,则不是问题,,只有传出参数这个问题是接口多继承不允许的例如:

    public interface IA {
    void doSomething();
    }
    public interface IB {
    Integer doSomething();
    }
    public interface IAB extends IA, IB {
    
    @Override	
    public void doSomething();
    
    @Override	
    public Integer doSomething();
    }
    
    

    这种情况编译器会告诉你: IA, IB 接口冲突,是不允许的。

    展开全文
  • Java接口作用的理解

    万次阅读 多人点赞 2018-05-08 23:27:49
    关于Java接口作用的深入理解。这是个很容易遇到的问题吧,看下面红色的部分应该就能理解了。 / 2019/3/1 补充 : 接口的存在也是为了弥补类无法多继承的缺点,假设一个情况,父类--Animal 子类--Dog、Cat 、People...

    关于Java中接口作用的深入理解。这是个很容易遇到的问题吧,看下面红色的部分应该就能理解了。


    / 2019/3/1 补充 : 接口的存在也是为了弥补类无法多继承的缺点,假设一个情况,父类--Animal  子类--Dog、Cat 、People、Sheep、Tiger、Lion。假设在 Animal 中都存在 eat()这个公有的方法。但是  Tiger 和  Lion 、People 还拥有  Hunt  的方法,但是hunt 不存在在 Dog / Cat中,所以需要对  Tiger Lion  People 上面新建一个 接口。用于特定标识他们公有的。

    ------- 其实上面的情况还有种方法解决 : 即在 父类下面再写一个三者的父类,加入新的动作,但是,这样五者不是在同一级上面的了,代码结构混乱,所以引入了接口。而在面向对象的Python语言中是允许多继承的。   总之,引入抽象类和接口是为了是代码逻辑更加清晰,建议去看一些简单的jdk源码,然后根据源码自己画一个类的UML图,理解一下平时所有的集合框架List Set这些的整体结构。


    2019/3/22 补充 : 接口在扩展性方面的体现 : 类 B  调用了  接口 A里面的一个方法,但是这个方法在当前提供的 jar 里面并没有接口的实现类 , 而接口的实现类需要通过外部的添加才可以。 那么我只需要通过反射的方式加载外部特定的 jar 包,即可实现不同的方法。就是类似于  A 的接口方法并没有具体实现,而我调用A中某个方法,最终调用的 看我外部加载的什么样子的实现类 。 充分体现了 解耦的特性 。 这里的一个很明显的体现就是  使用  JDBC 的时候,需要从外部加载驱动 。。。Class.forName("com.mysql.jdbc.Driver"); ,但是我也可以加载其他的驱动,比如 SSH 框架里面的。体现了一种拔插的思维。


    2019/4/26 补充: 今天在看 JDBC 源码的时候,发现第一句 的 class.forName(),做了很多的事情, 在jdk 中,只有  Driver 的一个接口,但是  mysql-connector-java.jar 这种类似的 jar 需要第三方去实现,  具体的Driver 实现类是在第三方的jar里面的,比如肯定还有 oracle的connector的jar。  这样就充分体现了扩展性,我在 class.forName 里面,指定加载 第三方的 Driver,那么在类加载的时候,可以完成 jdk 中 Driver 接口, 在 第三方jar 中具体实现的class,但是 我们知道就算知道接口也不行,因为在 jdk 中只有一个接口, 所以在 第三方 的jar里面,存在一个 配置文件,指向了在 第三方 jar 中具体实现了 jdk 中 sql 包下的 Driver 接口的 类,这样就可以通过反射的方式,获取到 第三方中具体实现类。   是不是 接口的 扩展性 非常的明显。  我只需要写接口,具体实现交给其他人去做,然后我使用的时候,只需要显示的加载某一个特定类,就可以获取到接口的实现类了。


    1、首先是关于接口的疑问:

    为什么要使用接口?接口的作用是什么?为什么不直接在实例类中进行方法实现,而是需要首先进行接口的定义?是不是多此一举了?

    2、其次是关于接口的使用规范:

    1、接口中可以定义常量,不能定义变量,如果你在接口中定义属性,那么通过反编译可以看见他会自动用public static final 修饰,接口中的属性都是全局静态常量,接口中的常量必须在定义时指定初始值。

    2、 接口中所有的方法都是抽象方法,接口中方法都会自动用public abstract 修饰,即接口中只有全局抽象方法。

    3、 接口不能实例化,接口中不能有构造。

    4、 接口之间可以通过extends实现继承关系,一个接口可以继承多个接口,但接口不能继承类。

    5、 接口的实现类必须实现接口的全部方法,否则必须定义为抽象类。

    3、然后我们回答一下开始提出的问题:

     

    2    接口的作用是什么?

    笔者认为接口是一种协议。例如两个开发者,开发时间完全不一致,那么需要两个人的配合开发,则需要一个人讲接口写好,定义好其中所有的变量命名规范、函数定义规范。具体实现类的开发人员则只需要按照接口实现相应功能即可。

     

    3、 为什么不在一个类是直接实现相应的方法,而是需要先进行接口抽象?

    ①首先是关于全局变量的定义,目的已经很清楚了。

    ②其次是说明一下接口的真正作用是建立在很多的对象类、并且类同时拥有很多的方法(需要实现的功能)。这种情景下,使用接口可以非常明显的感觉到接口的作用。

     

    下面举例:

     

    例如:海 、陆、 空  三种生活的动物类型,三种分别可以实现的功能是:

    海:游泳、捕猎水生动物、长时间憋气

     

     

    陆:走、跑、跳、爬、捕食、交流

    空:飞、捕食空中动物、鸣叫、

     

    划重点:以上就应该是我们需要定义的接口。高度抽象化的没有具体实现的方法。

     

     

     

     

     

    现在有这些确定的需要实例化的对象类

    人类(海、陆)

    鱼(海)

    鳄鱼(海、陆)

    鸟(陆、空)

     

     放出一个实例化  人类   对象源码,具体实现省略:

     

    package interfacedemo;
    
    public class Human implements Ocean,Land{
    
    	public Human() {
    	}
    
    	@Override
    	public void run() {
    	}
    
    	@Override
    	public void jump() {
    	}
    
    	@Override
    	public void walk() {
    	}
    
    	@Override
    	public void landCatch() {
    	}
    
    	@Override
    	public void communicate() {
    	}
    
    	@Override
    	public void swim() {
    	}
    
    	@Override
    	public void oceanCatch() {
    	}
    
    	@Override
    	public void breath() {
    	}
    
    }
    

     

     

    那么现在如果实例化对象的时候,不使用接口的方法。如果开发者很明确需求的情况下,问题不大。但是需求是其他人负责的话,那么可以你无法实现所有要求的方法。第二,如果不使用接口的方法,对于这几个类之间的关系是不清楚的。(可以自己举其他例子,而不去抽象出接口尝试一下)。

     

    4、最后讲一下使用接口的好处:

    ①全局变量定义

    ②如同上面的例子,我们去实现接口后,能够很明显清楚各个类具体实现类之间的关系,如果将自己的代码交给别人看的时候,他只需要看你所定义的接口就知道了你的类具体是干嘛的。换言之,你看别人的代码,如果别人的代码也是这样定义的,那么是不是改别人代码、看懂别人代码也容易很多了。所以,在之前笔者就说过:接口更像是一种定义的规范。

     

    推荐的 关于 接口的文章: https://blog.csdn.net/nvd11/article/details/41129935

     

    展开全文
  • java中空接口意义

    千次阅读 2019-08-14 10:00:37
    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接本声明。 ...

    看源码忽然发现一个空接口, 比如 Serializable

    public interface Serializable {
    }
    

    空接口的意义是什么?

    空接口的存在是为了起一种标识作用。标识某类如果实现该接口就会具备某种特性,可以做某些事。

    比如说 我自己定义了 一个空接口noCheck, 规定 如果实现该接口 就不需要做验证,那么我在代码中就可以这样判断

    if(obj instanceof noCheck){
    }else{
    }
    
    展开全文
  • java抽象类和接口有什么意义

    千次阅读 2021-02-04 16:53:06
    用了java这么久,对接口和抽象类使用一直很模糊。为什么接口和抽象类不能实例化,为什么接口可以多个实现而抽象类只能单继承,特别是java8之后,抽象类和接口里面都可以写代码后,就更加分不清了,今天重新整理一下...

    用了java这么久,对接口和抽象类使用一直很模糊。为什么接口和抽象类不能实例化,为什么接口可以多个实现而抽象类只能单继承,特别是java8之后,抽象类和接口里面都可以写代码后,就更加分不清了,今天重新整理一下。

    什么是抽象类(abstract class)

    使用abstract修饰符修饰的类。官方点的定义就是:如果一个类没有包含足够多的信息来描述一个具体的对象,这样的类就是抽象类。

    实际点来说,一个抽象类不能实例化,因为“没有包含足够多的信息来描述一个具体的对象”。但终归属于类,所以仍然拥有普通类一样的定义。依然可以在类的实体(直白点就是能在{}里面)定义成员变量,成员方法,构造方法等。

    那么可能初学者会问:既然不能实例化,那么在类里面定义成员方法,成员变量有什么用。

    抽象类在实际应用中,更多的是因为类中有抽象方法。抽象方法:只声明,不实现。具体的实现由继承它的子类来实现。实际点就是:被abstract修饰的方法,只有方法名没有方法实现,具体的实现要由子类实现。方法名后面直接跟一个分号,而不是花括号。例如:

    abstract class Animal{
        public abstract void run();
    }
    
    class Person extends Animal{
        @Override
        public void run() {
            System.out.println("Person.run");
        }
    }
    

    一个类中含有抽象方法(被abstract修饰),那么这个类必须被声明为抽象类(被abstract修饰)。

    什么是接口(interface)

    官方定义:接口在java中是一个抽象类型,是抽象方法的集合。一个类通过继承接口的方式,从而继承接口的抽象方法。

    从定义上看,接口是个集合,并不是类。类描述了属性和方法,而接口只包含方法(未实现的方法)。接口和抽象类一样不能被实例化,因为不是类。但是接口可以被实现(使用 implements 关键字)。实现某个接口的类必须在类中实现该接口的全部方法。虽然接口内的方法都是抽象的(和抽象方法很像,没有实现)但是不需要abstract关键字。

    接口中没有构造方式(因为接口不是类)

    接口中的方法必须是抽象的(不能实现)

    接口中除了static、final变量,不能有其他变量

    接口支持多继承(一个类可以实现多个接口)

    例如:

    声明两个职业 接口:

    public interface ItWorker {
        String name = "worker";
        public void coding();
    }
    public interface Teacher {
        String name = "teacher";
        public void teaching();
    }
    

    Person实现两种职业接口:

    public class Person implements ItWorker,Teacher{
        @Override
        public void coding() {
            System.out.println("I'm a"+ItWorker.name);
        }
    
    	@Override
    	public void teaching() {
    	   System.out.println("I'm a"+Teacher.name);
    	}
    
    }
    

    抽象类和接口有什么意义

    对于接口

    接口的最主要的作用是达到统一访问,就是在创建对象的时候用接口创建,【接口名】 【对象名】=new 【实现接口的类】,这样你像用哪个类的对象就可以new哪个对象了,不需要改原来的代码,就和你的USB接口一样,插什么读什么,就是这个原理。

    对于接口的作用,在一些小的项目上,很难看出其发挥的优势。这就使一些经常的做小项目的开发人员,做时间久了就感觉不到它有什么好的,有时候写起来还麻烦,干脆不用了。其实,在一些大项目上,接口的作用是发挥地相当的明显的。

    比如:如果你开发业务逻辑代码,当你好不容易的实现了它全部的功能,突然用户需求要改,你在修改你代码的同时,调用你代码的其它人也会改,如果代码关联性强的话,会有很多人都要改动代码,这样一来二去,程序会变得相当的不稳定,而且可能还会出现更多的新Bug,所有人都可能会陷入混乱。

    但如果使用接口的话,在你使用它之前,就要想好它要实现的全部功能(接口实际上就是将功能的封装)。确定下这个接口后,如果用户需求变了,你只要重新写它的实现类,而其它人只会调用你的接口,他不管你是怎么实现的,它只需要接口提供的功能。这样,很可能只需要把你的代码修改就可以了,其他人什么都不用做。

    同时:这样做的话,使得开发人员能够分工明确,只要确定下来接口了,就可以同时进行开发,提高开发效率。另外,使用接口还有使用方便,可读性强,结构清晰
    等优点。

    对于抽象类

    一般来说我们使用普通类来实现接口,这个普通类就必须实现接口中所有的方法,这样的结果就是普通类中就需要实现多余的方法,造成代码冗余。但是如果我们使用的是抽象类来实现接口,那么就可以只实现接口中的部分方法,并且当其他类继承这个抽象类时,仍然可以实现接口中有但抽象类并未实现的方法。

    总结

    我们可以把接口看成一个工具,当我们实现一个接口时,就意味着能使用这一工具,当我们实现多个接口时,就能使用多种工具,就像上面Person可以是多种职业,所以它可以同时实现Teacher和ItWorker接口。

    而抽象类则可以看成是一个祖先,所以一个类只能继承一个祖先,如上Animal是Person的祖先,所以Person具有Animal的一切属性。

    展开全文
  • 大多数人认为接口意义在于顶替多重继承众所周知Java没有c++那样多重继承的机制但是却能够实作多个接口其实这样做是很牵强的接口和继承是完全不同的东西接口没有能力代替多重继承也没有这个义务接口作用...
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JREJDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序小程序的...
  • 主要介绍了深入解析Java接口(interface)的使用,是Java入门学习中的基础知识,需要的朋友可以参考下
  • Java知识体系最强总结(2021版)

    万次阅读 多人点赞 2019-12-18 10:09:56
    本人从事Java开发已多年,平时有记录问题解决方案总结知识点的习惯,整理了一些有关Java的知识体系,这不是最终版,会不定期的更新。也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同...
  • 说一下Java中抽象类和接口存在的意义与价值

    千次阅读 多人点赞 2018-10-15 16:29:41
    定义是很简单的,我们这里不写官方的语言,我自己看着都烦,我们就用白话介绍,抽象类本质是一个类,没问题,那么类里面一般都是有方法的,方法包括方法名方法体,这是常识对不对,那么什么是抽象类呢?...
  • Java 接口作用与好处

    千次阅读 2019-05-12 19:50:53
    二、抽象类和接口都差不多,在什么时候才选择使用接口? 以下是详细说明: https://blog.csdn.net/JLongSL/article/details/54885780 现在总结一下文章一开始提出的两个问题 一、明明可以在类中直接写所需的方法,...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,...JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境运行环境。 JRE:Java Runtime Environ...
  • 抽象类和接口是两个非常相似的类型,许多人认为这俩可以互相换着用,他们既有相似的地方,也有不同的地方,本文将带你梳理这些误区,而且用实际代码告诉你抽象类实现接口会多么的有用。 先来熟悉接口与抽象类的区别...
  • 结论:abstract classInterface是JAVA语言中的两种定义抽象类的方式。Interface将abstract的概念作了更进一步的发挥。你可以想像Interface是“纯粹”的 abstract class,只可以包含抽象方法,也包括一些常量的定义...
  • Java语言特点

    万次阅读 多人点赞 2019-06-30 19:37:45
    Java语言的语法与C语言C++语言很接近,从某种意义上讲,它是由CC++演变而来,使得大多数程序员很容易学习使用。 对C++来说进行了简化一定的提高,如:使用接口代替了复杂的多重继承以及取消了指针,还通过...
  • Java 接口(interface)的用途好处

    万次阅读 多人点赞 2014-11-16 23:51:39
     这个就是多态的意义. 代码如下: class Farmer{ public void bringWater(String destination){ System.out.println("Farmer bring water to " + destination + "."); } public ...
  • JAVA接口存在的意义

    千次阅读 2015-12-13 17:36:38
    很多JAVA初级程序员对于接口存在的意义很疑惑。不知道接口到底是有什么作用,为什么要定义接口。好像定义接口是提前做了个多余的工作。下面我给大家总结了4点关于JAVA接口存在的意义:  1、重要性:在Java语言中...
  • Java接口回调

    千次阅读 2020-01-03 13:48:30
    回调的含义用途 什么是回调? 一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类:同步调用、异步调用回调。同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的函数名来调用...
  • **抽象类可以使用implements关键字实现接口,但又不用在该抽象类里实现接口里的具体方法(不实现接口的具体方法不会报错),那设计抽象类可以使用implements来实现接口有什么意义啊?** 抽象类: public ...
  • Java接口存在的意义

    千次阅读 2016-10-05 10:58:45
    因为学习Android,所以重新看了Java中关于继承与接口,以及向上转型向下转型的内容。 若有所悟,理解了接口存在的意义,如果有问题还请各位前辈指出。 接口会出现,最关键的原因应该是Java中向上转型的出现,...
  • 继承好处就是父类方法可以重复使用 子类继承后调用就好了 可是父类有的方法设置为抽象的 意义何在 子类继承后还要重写抽象方法 不如不继承 继承后要写 不继承也是写啊 ~~~ 还有接口 都是抽象的 ~~~实现了接口 还是...
  • Java接口继承接口

    万次阅读 2019-02-27 08:49:26
    接口A有个方法getName(),接口B继承接口A,不用复写接口A的方法,写接口B自己的东西(业务)即可,当一个类C去继承B接口的时候,是需要复写两个接口中的方法的实现的——语法层 意义: 举个都知道的东西——书。...
  • Java框架总结

    万次阅读 多人点赞 2020-01-17 14:14:13
    本系列用来记录常用java框架的基本概念、区别及联系,也记录了在使用过程中,遇到的一些问题的解决方法,方便自己查看,也方便大家查阅。 欲速则不达,欲达则欲速! 一、SSH 1、基本概念 SSH框架是JAVA EE中三种...
  • java接口的使用以及接口存在的意义揭秘 1、 什么是接口 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现...
  • Java集合面试题

    万次阅读 多人点赞 2019-06-25 14:46:19
    Java 集合框架的基础接口有哪些? Collection ,为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java 平台不提供这个接口任何直接的实现。 Set ,是一个不能包含重复元素的集合。这个接口对...
  • 内部类可以为四种⒈ 静态内部类⒉ 成员内部类⒊ 局部内部类⒋ 匿名内部类几种内部类的共性:A、内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类名$符号。...
  • 理解Java接口回调

    千次阅读 多人点赞 2019-02-28 13:08:27
    1、创建一个回调接口。 2、创建一个回调对象实现回调接口。 3、创建一个控制器对象,将回调对象作为参数传给控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,则调用回调对象的某...
  • Java中抽象类和接口的区别

    万次阅读 多人点赞 2019-02-07 14:10:07
    Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口...
  • 但是学习过程中发现Java中其实存在多继承的,它存在于接口接口之间,不知道这种多继承的存在意义是什么? ``` import static java.lang.System.*; public class ExtendsTest implements A { public static void...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 269,633
精华内容 107,853
关键字:

java接口的作用和意义

java 订阅