`

java 接口 interface ,接口与抽象类

阅读更多
1.JAVA 接口
        在JAVA中,接口有两种意思:
        一种是指系统对外提供的所有服务。类的所有能被外部使用者访问的方法构成了类的接口。
        二是指用 interface 关键字定义的实在的接口,也称为接口类型。它用于明确的描述系统对外提供的所有服务,能够更加清晰的把系统的实现细节与接口分离。

        接口 类型和抽象类都不能实例化。

  接口的特征:  
        接口中的成员变量默认都是 public static final 类型的,必须被显示初始化。
        接口中的方法默认都是public abstract 类型的。
        接口中只能包含 public staic final 类型的成员变量和public abstract 类型的方法。
        接口没有构造方法,不能被实例化。
        一个接口不能实现另一个接口,但它可以继承多个其他接口。
        接口必须通过类来实现它的抽象方法。类实现接口的关键字为 implements。
        与子类继承抽象父类相似,当类实现了某个接口时,它必须实现接口中所有的抽象方法,否则这个类必须定义为抽象类。
        不允许创建接口的实例,但允许定义接口类型的引用变量,该变量引用实现了这个接口的类的实例。

       InterfaceTest t = new ClassTest();   //ClassTest 实现了这个接口

        一个类只能继承一个直接的父类,但是可以实现多个接口。
        public class MyApplet extends Japplet implements Runnable,MounlisterInterface{   }


对于接口的语法就体现在下面的一个实例中

public interface InterfaceTest{

     public static final int MAX_AGE =100;//变量默认的都是 public static final 类型
     public static final int MIN_AGE = 18;

    public abstract void showInfo(); //方法默认的都是 public abstract 类型的
    
     int M_CHANCE = 10 ;//合法 默认的都是 public static final 类型
     void method();//合法 默认的都是 public abstract 类型的
     
     //void methoda(){System.out.println("methoda");}//编译出错,接口中只能包含抽象方法,即没有方法体
     // interface methods cannot have body
 
     //public InterfaceTest(){}  //接口中不允许定义构造方法
}



2.接口与抽象类
     
抽象类与接口都位于继承树的上层,它们具有以下相同点

        代表系统的抽象层。
        都不能被实例化
        都能包含抽象方法。

区别
        在抽象类中,可以有部分的方法为非抽象方法,从而避免在子类中重复实现它们,提高代码的可重用性。而接口只能包含抽象方法。

        一个类只能继承一个直接的父类,这个父类有可能是抽象类。但一个类可以实现多个接口,这是接口的优势所在。

        接口是构建耦合的软件系统的重要法宝。由于接口用于描述系统对外提供的所有服务,因此接口中的成员变量和方法都必须是public 的,确保外部访问者能访问它们。

        接口仅仅描述系统能做什么,但不指明如何去做,所以接口中的方法全部是抽象的。

        接口不涉及和任何具体实例相关的实现细节,因此接口没有构造方法,不能被实例化,没有实例变量。

        抽象类的优势在于可以为部分方法提供默认的实现,避免子类重复实现它们,从而提高代码的可重用性。但抽象的这一优势限制了多继承。

        接口的优势在于一个类可以实现多个接口,接口获得这一优势是以不允许为任何方法提供实现为代价的。
分享到:
评论

相关推荐

    详细解析Java中抽象类和接口的区别

    抽象类和接口的区别 在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持...

    Java中抽象类和接口的区别

    在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...

    Java中抽象类和接口的区别与作用详解

    结论:abstract class和Interface是JAVA语言中的两种定义抽象类的方式。Interface将abstract的概念作了更进一步的发挥。你可以想像Interface是“纯粹”的 abstract class,只可以包含抽象方法,也包括一些常量的定义...

    Java中interface接口与abstractclas

    Java中interface接口与abstractclass抽象类的区别共2页.pdf.zip

    浅析Java抽象类和接口的比较

    abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。

    JAVA中抽象类和接口的区别

    在Java语言中,abstract class 和interface 是支持抽象类定义的两种机制区别

    java高级类操作 接口与抽象类的操作

    circle Rectangle等类在接口中计抽象类中的用法 抽象类 接口多态 public class Polymorphism { public static void main(String args[]) { Triangle t=new Triangle(5.0,2.0); t.show_area(); Rectangle r=...

    Java接口和Java抽象类

    我看过讲解java接口与java抽象类的最好的一片文章,和大家共享。

    JAVA中抽象类与接口的区别

    Abstractclass和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力

    java包与接口实验报告

    API 包—方面提供丰富的类与方法供大家使用,如画图形、播放声音等,另一方面又负责和系统软硬件打交道,圆满实现用户程序的功能。所有Java API 包都以“java.”开头,以区别用户创建的包。 常见Java系统包及其作用...

    Java语言提供的一种接口(interface)机制

    Java语言提供了一种接口(interface)机制。...你可以把一个接口看成是一个纯的抽象类。理解并用好接口机制将帮助我们更好的掌握Java这种面向对象的编程语言。本文讨论了一下接口的使用规则以及相关的应用。

    java 抽象类练习题

    java 抽象类 接口 异常 练习题 1.在使用interface声明一个接口时,只可以使用哪个修饰符修饰该接口(D)。 A.private B.protected C.private protected D.public 2.下列程序运行的结果是(B)。 interface ...

    接口和抽象类的区别(面向对象)

    接口与抽象类的区别 抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸,猪用肺呼吸。 动物类要有呼吸方法。怎么呼吸就是子类的事了。 现在有很多讨论和建议提倡用interface代替abstract类,两者从...

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    好啊好啊 抽象类与接口是Java中最重要部分之一,这里用较大的篇幅来做下这部分的笔记. 1. final关键字 在Java中, 可以使用final关键字修饰类、方法以及成员变量。 (1).final标记的类不能被继承; (2).final标记...

    Java中抽象类和接口的区别.zip_java interf

    在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...

    Java基础 接口.pdf

    6、接口与抽象类有些相似,但也有很大区别,比如接口不能包含构造器、变量和实例方法等。 Java接口的具体作用 1、接口定义了一个规范,类实现这个规范即可满足某些特定的需求。 2、接口可以使代码结构更加清晰,提高...

Global site tag (gtag.js) - Google Analytics