`

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{   }


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

Java代码
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(){}  //接口中不允许定义构造方法  


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语言的接口与抽象类

    4. 绑定关系:抽象类与子类有从属绑定,接口与实现类之间没有这种绑定。 5. 动态绑定:两者都支持运行时多态,即父类引用指向子类对象。 在使用原则方面: 1. 抽象类:通常用于一组相关子类共享代码,减少代码冗余...

    java中接口与抽象类的详细分析与比较

    在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性的关键概念,它们各自有特定的用途和优缺点。本文将深入探讨这两种概念,帮助你理解它们之间的区别以及如何在实际开发中选择使用...

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

    #### 抽象类与接口的基本概念 1. **抽象类**:抽象类是一种不能被实例化的类,它可以包含抽象方法(没有实现的方法)和具体方法(有实现的方法)。抽象类的主要目的是为子类提供一种共有的基本结构,子类必须实现...

    Java 接口和抽象类

    Java 接口和抽象类 Java 编程语言提供了两种机制来实现面向对象编程的多态性:接口和抽象类。这两种机制使得 Java 应用开发具有灵活性和敏捷性。 抽象类 抽象类是一种特殊的类,它不能被实例化,不能被直接使用,...

    java利用接口和抽象类改写求圆的面积和梯形的面积.docx

    在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性和代码复用的重要概念。它们都无法被直接实例化,而是位于继承结构的顶层,被其他类实现或继承。接口和抽象类都可以包含抽象方法...

    java 抽象类与接口的练习

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计...通过这样的练习,你可以更好地理解和掌握Java中的抽象类与接口,以及它们在实际开发中的应用。在实践中不断尝试和调试,将有助于深化对这两个概念的理解。

    Java基础知识:接口和抽象类

    Java 基础知识:接口和抽象类 在 Java 编程中,接口和抽象类是两个重要的概念,它们都用于实现面向对象编程中的抽象和封装,但在使用方式和功能上有所不同。 1. 接口(Interface) 接口是一种抽象的数据类型,它...

    接口与抽象类的区别以及一些java基础

    // 接口中的方法只能通过对象调用,不能通过类名调用 }}在Java中,接口和抽象类都是用于实现多态性的重要工具,但它们之间存在显著的区别: 1. **接口(Interface)**: - 接口是一个完全抽象的类型,它只包含...

    Java中抽象类和接口的区别

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

    Java中interface接口与abstractclas

    在Java编程语言中,`interface`接口和`abstract class`抽象类是两种重要的面向对象设计概念,它们都用于实现多态性,但有着显著的区别。理解这些差异对于编写可扩展和可维护的代码至关重要。 首先,接口是完全抽象...

    java抽象类与接口区别

    ### Java抽象类与接口的区别 #### 一、引言 在Java编程中,抽象类(Abstract Class)与接口(Interface)都是实现抽象的关键工具。它们各自有着独特的优势和适用场景,掌握这两者的区别有助于开发者更好地设计系统...

    java 抽象类与接口的区别

    理解抽象类与接口的区别并恰当运用,有助于提升代码的可扩展性和可维护性,使得软件设计更加灵活和面向对象。在进行Java编程时,应根据项目需求和设计原则,合理选择抽象类或接口来实现特定功能,以达到最佳的设计...

    Java源代码:抽象类和接口

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,为其他类提供模板或行为指南。让我们深入探讨这两个概念及其在Java中的应用。 首先,我们来理解抽象类。在Java中,抽象类是一...

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

    Java中的高级类操作涉及到抽象类和接口的使用。抽象类是一种不能被实例化的类,它主要用来被其他类继承,定义共有的属性和方法。接口则是一种完全抽象的类型,用于定义一组方法签名,实现多继承的效果。 首先,让...

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

    Java中的抽象类(abstract class)和接口(interface)都是用于创建抽象化模型的重要工具,它们在面向对象编程中扮演着核心角色。这两种机制都允许我们定义一组方法的签名,但不提供具体实现,从而实现“设计契约”...

    Java接口和Java抽象类

    在面向对象编程语言Java中,接口(Interface)和抽象类(Abstract Class)是实现多态性和代码复用的重要手段。它们都允许开发者定义行为规范而不需要具体实现细节,但它们之间存在一些关键性的区别。本文将深入探讨...

    java中的抽象类和接口的理解

    #### 四、抽象类与接口的区别 1. **继承数量的不同**: - 抽象类:一个类只能继承一个抽象类。 - 接口:一个类可以实现多个接口。 2. **方法实现的不同**: - 抽象类:可以有抽象方法和具体方法。 - 接口:...

    JAVA 继承基本类、抽象类、接口区别与联系

    ### JAVA继承基本类、抽象类、接口的区别与联系 #### 一、概述 在Java语言中,类(Class)的设计是面向对象编程的核心之一。Java提供了三种方式来扩展类的功能:基本类、抽象类和接口。这三者之间既有相似之处,也...

    JAVA中抽象类和接口的区别

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

Global site tag (gtag.js) - Google Analytics