精华内容
下载资源
问答
  • Java 中到底是应该用接口类型 还是实现类的类类型去引用对象? //implA 为接口 ClassA为其实现类 implA a=new ClassA();//接口类型的引用变量A 去接收对象地址 or ClassA a=new ClassA();//类类型的引用变量...

    今天我们讨论问题是:接口 对象 = new 实现类 与 实现类 对象= new 实现类???

    Java 中到底是应该用接口类型 还是实现类的类类型去引用对象?

     

    //implA 为接口 ClassA为其实现类
    implA a=new ClassA();//接口类型的引用变量A 去接收对象地址
    or
    ClassA a=new ClassA();//类类型的引用变量A 去接收对象地址

     

    我们假设有一个接口A ,和它得实现类B,简化代码如下:

    public interface InterA{
    
        void request();
    }
    
    public class ImplA implements InterA {
    
        @Override
        public void request() {
            System.out.println("接口中的方法");
        }
    
        public void specile() {
            System.out.println("实现类中特殊的方法");
        }
    }

    测试类:

    public class Test {
    
        public static void main(String[] args) {
            /**
             * 接口类型的引用变量A 去接收对象地址,只能调用接口中的方法
             */
            InterA a= new ImplA();
            a.request();
    
            /**
             * 类类型的引用变量A 去接收对象地址,可以调用很多方法
             */
            ImplA b = new ImplA();
            b.request();
            b.specile();
        }
    }
    InterA a= new ImplA();

    用接口类型的引用变量demo,去接收实现类B实例化出来的对象地址(这里的=是传递的地址)。为什么不是 ImplA b = new ImplA();呢,这样也不会有问题啊?(当然InterA a= new InterA();是不可能的,因为接口是不能用来实例化对象的,但可以用来声明一个接口类型的引用变量)。

     

    转载于:https://www.cnblogs.com/xiaoheliu1024/p/10918017.html

    展开全文
  • Java接口声明对象

    千次阅读 2015-10-11 16:40:28
    Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更抽象化。但是接口不是类,不能使用new 运算符实例化一个接口。如 x=new comparable(......);//这个是错误来...

    Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更抽象化。但是接口不是类,不能使用new 运算符实例化一个接口。如 x=new comparable(......);//这个是错误来的。但是可以声明接口变量Comparable x; //这是允许的。

    用JAVA接口声明一个变量是什么意思?

    不是接口变量,而是一个接口类型的引用指向了一个实现给接口的对象,这是java中的一种多态现象
    java中的接口不能被实例化,但是可以通过接口引用指向一个对象,这样通过接口来调用方法可以屏蔽掉具体的方法的实现,这是在JAVA编程中经常用到的接口回调,也就是经常说的面向接口的编程


    展开全文
  • java接口对象区别

    万次阅读 2017-11-21 08:35:57
    深入理解Java接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为...
    1. “`

      1. 列表内容

      深入理解Java的接口和抽象类

        对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲:

        一.抽象类

        二.接口

        三.抽象类和接口的区别

        若有不正之处,请多多谅解并欢迎批评指正,不甚感激。

        一.抽象类

        在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:
      abstract void fun();

        抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。

        下面要注意一个问题:在《JAVA编程思想》一书中,将抽象类定义为“包含抽象方法的类”,但是后面发现如果一个类不包含抽象方法,只是用abstract修饰的话也是抽象类。也就是说抽象类不一定必须含有抽象方法。个人觉得这个属于钻牛角尖的问题吧,因为如果一个抽象类不包含任何抽象方法,为何还要设计为抽象类?所以暂且记住这个概念吧,不必去深究为什么。
      [public] abstract class ClassName {
      abstract void fun(); }

        从这里可以看出,抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。对于一个父类,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类了。

        包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:

        1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

        2)抽象类不能用来创建对象;

        3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

        在其他方面,抽象类和普通的类并没有区别。 二.接口

        接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数。从这里,我们可以体会到Java语言设计者的初衷,它是对行为的抽象。在Java中,定一个接口的形式如下:
      [public] interface InterfaceName { }

        接口中可以含有 变量和方法。但是要注意,接口中的变量会被隐式地指定为public static
      final变量(并且只能是public static
      final变量,用private修饰会报编译错误),而方法会被隐式地指定为public abstract方法且只能是public
      abstract方法(用其他关键字,比如private、protected、static、
      final等修饰会报编译错误),并且接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。从这里可以隐约看出接口和抽象类的区别,接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量。

        要让一个类遵循某组特地的接口需要使用implements关键字,具体格式如下: class ClassName
      implements Interface1,Interface2,[….]{ }

        可以看出,允许一个类遵循多个特定的接口。如果一个非抽象类遵循了某个接口,就必须实现该接口中的所有方法。对于遵循某个接口的抽象类,可以不实现该接口中的抽象方法。
      三.抽象类和接口的区别

      1.语法层面上的区别

        1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

        2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

        3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

        4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

      2.设计层面上的区别

        1)抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。举个简单的例子,飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。那么在设计的时候,可以将飞机设计为一个类Airplane,将鸟设计为一个类Bird,但是不能将
      飞行 这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将 飞行 设计为一个接口Fly,包含方法fly(
      ),然后Airplane和Bird分别根据自己的需要实现Fly这个接口。然后至于有不同种类的飞机,比如战斗机、民用飞机等直接继承Airplane即可,对于鸟也是类似的,不同种类的鸟直接继承Bird类即可。从这里可以看出,继承是一个
      “是不是”的关系,而 接口 实现则是
      “有没有”的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系,比如鸟是否能飞(或者是否具备飞行这个特点),能飞行则可以实现这个接口,不能飞行就不实现这个接口。

        2)设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。什么是模板式设计?最简单例子,大家都用过ppt里面的模板,如果用模板A设计了ppt
      B和ppt C,ppt B和ppt C公共的部分就是模板A了,如果它们的公共部分需要改动,则只需要改动模板A就可以了,不需要重新对ppt
      B和ppt
      C进行改动。而辐射式设计,比如某个电梯都装了某种报警器,一旦要更新报警器,就必须全部更新。也就是说对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;而对于接口则不行,如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。

        下面看一个网上流传最广泛的例子:门和警报的例子:门都有open( )和close(
      )两个动作,此时我们可以定义通过抽象类和接口来定义这个抽象概念:
      abstract class Door {
      public abstract void open();
      public abstract void close(); }

        或者:
      interface Door {
      public abstract void open();
      public abstract void close(); }

        但是现在如果我们需要门具有报警alarm( )的功能,那么该如何实现?下面提供两种思路:

        1)将这三个功能都放在抽象类里面,但是这样一来所有继承于这个抽象类的子类都具备了报警功能,但是有的门并不一定具备报警功能;

        2)将这三个功能都放在接口里面,需要用到报警功能的类就需要实现这个接口中的open( )和close(
      ),也许这个类根本就不具备open( )和close( )这两个功能,比如火灾报警器。

        从这里可以看出, Door的open()
      、close()和alarm()根本就属于两个不同范畴内的行为,open()和close()属于门本身固有的行为特性,而alarm()属于延伸的附加行为。因此最好的解决办法是单独将报警设计为一个接口,包含alarm()行为,Door设计为单独的一个抽象类,包含open和close两种行为。再设计一个报警门继承Door类和实现Alarm接口。

       interface Alram {
      void alarm(); }   abstract class Door {
      void open();
      void close(); }   class AlarmDoor extends Door implements Alarm {
      void oepn() {
        //....
      }
      void close() {
        //....
      }
      void alarm() {
        //....
      } } ```
      
    展开全文
  • Java接口对象作为参数传递

    千次阅读 2016-05-23 18:56:14
    Java接口对象作为参数传递(小例子)


           

         第一步想用接口作为参数 首要的条件就是要有接口,定义一个接口

    <pre name="code" class="java">         public interface A{
                  public void helloWorld();
             }

     
    

         第二步:有了接口,必须有实现接口的类

    <pre name="code" class="java">               public class B implements A{
                        public void helloWorld(){
                        System.out.println("世界,您好!");
                        }
                   }


     
       
      第三步:有了前边的准备工作当然就要有将A接口作为参数的类了
     
    

    <pre name="code" class="java">             public class C {
                         public void helloTest (A a){
                                a.helloWorld();
    
                        }
            
                     }


     
         
     
    第四步:
    就是客户端的调用了
    

    public class Client{
         public static void main(String[] args){
          C   c = new C();
    //向上转型
          A  b  = new B();
    
           c.helloWorld(b);
    
          }
    }

       第五步: 程序结果

    世界,您好!
    展开全文
  • 新手小白学JAVA 接口 面向接口开发

    万次阅读 多人点赞 2021-05-13 13:35:52
    接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 接口并不是类,编写接口的方式和类很相似,但是...
  • JAVA基础——接口(全网最详细教程)

    万次阅读 多人点赞 2018-05-10 09:46:42
    官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 我的解释:接口...
  • java对象实现Serializable接口

    万次阅读 2014-09-03 09:37:43
    理解java对象实现Serializable接口
  • Effective-Java 通过接口引用对象

    千次阅读 2020-06-28 09:47:33
    64. 通过接口引用对象 条目 51 指出,应该使用接口而不是类作为参数类型。更一般地说,你应该优先使用接口而不是类来引用对象。如果存在合适的接口类型,那么应该使用接口类型声明参数、返回值、变量和字段。 惟一...
  • java接口和类的区别Java 接口

    万次阅读 2016-11-07 20:47:55
    Java 接口 接口(interface)在java语言中就是一个抽象类型,但接口并不是一个抽象类,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 接口并不是类...
  • 接口的实现类创建对象时,都要用多态吗?还是有什么其他的情况?因情而异?
  • Java面向对象

    千次阅读 多人点赞 2019-05-08 23:33:50
    Java面向对象1.Java面向对象是什么2.面向过程和面向对象的优缺点1.面向过程的优缺点:2.面向对象的优缺点:3.面向对象三大特性五大原则1.三大特性:2.五大原则:总结: 1.Java面向对象是什么 OOP(面向对象编程)、...
  • java解析数据接口获取json对象

    千次阅读 2019-07-07 14:18:49
    也获取了json对象,但后也发现,它没法直接连接数据库,也就是说这些数据不能直接存入数据库,经过查询,使用node.js作为中介可以解决这个问题,后又发现,连接后一次只能向数据库post一个对象,后就直接使用java解析...
  • Java面向对象学习】一张图搞定Java面向对象

    千次阅读 多人点赞 2017-09-13 07:56:41
    Java面向对象学习】一张图搞定Java面向对象,分享一些归纳总结后的技术干货,一张图能搞定的事,绝对不长篇大论。 大家都知道,Java面向对象Java的一个核心,也是初学者的一个难点,所以我们从这里开始,Let...
  • java接口的意义

    万次阅读 多人点赞 2019-05-23 16:51:55
    1. java当中继承一个接口,要重写他的方法的话,那为什么还要多此一举的去实现一个接口呢? 直接把方法写在类当中不就可以了? 就是说去掉类名后面的Implements 接口 ,可以不可以呢? 统一访问: 接口的最主要的...
  • Java 接口实例化

    千次阅读 多人点赞 2019-08-09 10:14:46
    但是可以在 Java 中,使用接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。 public interface TestInterface{} TestInterface testInterface = new TestInterface();//...
  • JAVA接口机制

    万次阅读 2020-05-14 19:17:18
    接口 描述类具有什么功能,不必给出具体的实现 ...这个变量必须引用实现了这个接口对象 抽象类变量必须引用继承了这个抽象类的对象 接口和抽象类的区别 抽象类 接口 关键字 abstract cla
  • java Api接口判断传入的对象以及对象字段是否为空
  • Java 多态多态是同一个行为具有多个不同表现形式或形态的能力。多态的优点 消除类型之间的耦合关系 可替换性 可扩充性 接口性 灵活性 简化性 多态存在的三个必要条件继承 重写 父类引用指向子类对象 比如: ...
  • Java接口 详解(一)

    万次阅读 多人点赞 2016-10-06 00:46:42
    一、基本概念接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合。接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。如果一个类只由抽象方法和全局常量组成,...
  • Java 接口做参数,接口回调

    千次阅读 2020-07-05 15:53:33
    JAVA接口做参数,接口回调 接口做参数:将实现某接口的类的对象的引用用作参数传递给该接口参数。该接口通过回调来实现该接口方法。 接口回调:实现某接口的类的对象的引用,赋值给该接口声明的接口变量。 难以理解...
  • java 对象实现序列化 Serializable()接口

    万次阅读 2018-10-02 10:56:23
    当一个类实现了Seializable接口(该接口仅为标记接口,不包含任何方法定义),表示该类可以序列化,序列化的目的是将一个实现了Serializable接口对象可以转换成一个字节序列,保存对象的状态。 把该字节序列保存...
  • java利用反射为接口实例化对象并调用 package xxxxx; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import xxxxx.MyLibrary.MyCallback; import java.lang.reflect.InvocationHandler; ...
  • 在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解。刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有...
  • 我们可以定义一个接口类型的引用变量来引用实现接口的类的实例,当这个引用调用方法时,它会根据实际引用的类的实例来判断具体调用哪个方法,这和上述的超类对象引用访问子类对象的机制相似。//定义接口InterA ...
  • 引言 接口(Interface) 在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的... 接口文件保存在 .java 结尾的文件中,文件名使用接口名...
  • Java中如何遍历Map对象的4种方法

    万次阅读 多人点赞 2013-09-05 10:19:21
    Java中如何遍历Map对象 How to Iterate Over a Map in Javajava中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, ...
  • java接口编写规则

    千次阅读 2019-01-28 10:11:12
    服务方 所有接口提供统一入口,不同接口传递不同参数。...接口所有字段定义为一个dto对象。 优点:整个接口有哪些字段,什么类型,是否为必填,什么含义,一目了然。并且方便验证。 消费方 接口...
  • java接口实现多态

    万次阅读 2016-11-08 20:00:43
    多态: 父类的引用类型变量指向了子类的对象或者是接口类型的引用类型变量指向了接口实现类 的对象。 实现关系下的多态: 接口 变量 = new 接口实现类的对象。 interface Dao{ //接口的方法全部都...
  • java web开发(二) 接口开发

    万次阅读 多人点赞 2016-06-03 16:50:34
    java web开发(一) 环境搭建讲解了如何搭建一个Java Web项目,如果你还没了解,建议先浏览下!今天这篇文章主要讲解的就是接口开发,打算使用比较古老的或者说比较原始方法实现的接口。 一.数据库设计。 假设要做...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,462,527
精华内容 585,010
关键字:

java的接口对象

java 订阅