2.3Java引用类型之接口(Interface)

1.接口声明

接口分为两种:普通(normal)接口和注解(annotation)接口。

成员变量全部是静态常量,即便是变量不加static final修饰符也是静态常量。

成员方法可以包含静态方法、实例方法(default关键字实现)、抽象实例方法。

interface 接口名 
{
    //常量前的修饰符可省略
    [public] [static] [final] 类型 常量名 = 值;
    //静态方法、实例方法(default关键字实现)
    [public] [static] [default] 返回类型 方法名(参数){...};
    //抽象实例方法
    [public] [abstract] 返回类型 方法名(参数);
}

2.继承

一个类只能继承自另一个类,不能从多个类继承。但是,一个interface可以使用extends继承多个interface

虽然接口重写,并没有实际意义,但就像类一样,接口也支持方法重写功能。

例如:

interface Hello 
{
    void hello();
}

interface Person extends Hello 
{
    void run();
    String getName();
}

3.接口实例化

接口不是类,所以不能通过new运算符来实例化一个接口,但可以声明接口的变量。

//接口Comparable
Comparable x;
//Employee类实现了接口Comparable
x = new Employee();

4.实现

一个类可以使用implements实现一个或多个interface

这个类必须完全实现这些接口里所定义的全部抽象方法(除默认方法和静态方法);否则,该类将保留从父接口那里继承到的抽象方法,该类也必须定义成抽象类。

实现接口时接口中原有的抽象方法在实现类中必须实现。默认方法可以根据需要有选择实现(覆盖)。静态方法不需要实现,实现类中不能拥有接口中的静态方法。

//InterfaceA.java文件
package com.a51work6;

public interface InterfaceA 
{
    void methodA();
    String methodB();
    // 默认方法
    default int methodC() 
    {
        return 0;
    }
    // 默认方法
    default String methodD() 
    {
        return "这是默认方法...";
    }
    // 静态方法
    static double methodE() 
    {
        return 0.0;
    }
}
//ABC.java文件
package com.a51work6.imp;

import com.a51work6.InterfaceA;

public class ABC implements InterfaceA 
{
    @Override
    public void methodA() 
    {
    }
    @Override
    public String methodB() 
    {
        return "实现methodB方法...";
    }
    @Override
    public int methodC() 
    {
        return 500;
    }
}

5.注解

5.1注解声明

注解接口是一种特殊的接口类型。为了与普通接口区分开来,关键字interface的前面应该有一个 @ 符号。

@interface 注解接口名 
{
    类型 元素名1();
    类型 元素名2() default 默认值;
}
@interface RequestForEnhancementDefault 
{
    int id(); 
    String synopsis(); 
    String engineer() default "[unassigned]";
    String date() default "[unimplemented]";
}

5.2注解使用

元素的顺序无关紧要。

如果某个的元素并未指定,那么就使用声明的默认值。

@AnnotationName(元素名1=值1, 元素名2=值2,...)

5.2.1无元素注解

如果注解中没有元素或所有元素都使用默认值,则可以省略括号。

@Override
void mySuperMethod() { ... }

5.2.2有元素注解

有元素注解可以包含多个或单个的元素。

因为单个元素,没有其它元素,可以使用value或省略元素名以及等号。

//多个元素
@Author(name = "Benjamin Franklin", date = "3/27/2003")

//单值注解
@SuppressWarnings(value =“ unchecked”)

//单值注解的简写
@SuppressWarnings("unchecked")

5.2.3多个注解

也可以在同一声明上使用多个注解。

@Author(name = "Jane Doe")
@EBook
class MyClass { ... }

5.2.4多重注解

如果注解具有相同的类型,则称为多重注解。

@Author(name = "Jane Doe")
@Author(name = "John Smith")
class MyClass { ... }

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/java/javalang/2488.html

(0)
上一篇 2021年1月2日 17:52
下一篇 2021年1月3日 02:29

相关推荐

  • 2.9Java引用类型之集合(Collection)

    1.集合框架 在 图 1 和图 2 中,黄色块为集合的接口,蓝色块为集合的实现类。 2.集合接口 接口 作    用 Iterator<E> 接口 Collection 接口的超接口。 Collection<E> 接口 List、Set 和 Queue 的超接口。 List&…

    Java语言教程 2021年1月9日
    01.3K0
  • 2.2Java引用类型之类(Class)

    1.声明 2.继承 类仅支持单一继承。 3.构造器 构造器名称需与类名相同。 构造器没有返回类型。 如果一个类没有构造器,就会为你提供一个无参数构造器,这个构造器将所有的实例字段设置为默认值。 4.创建对象 5.访问成员 6.this关键字 场景一:this指向对象本身。 场景二:调用该类的其它构造器。 7.访问器方法…

    Java语言教程 2021年1月2日
    01.2K0
  • 1.9Java语言的异常(Exception)语句

    1.throw语句 2.try-catch语句 3.try-finally语句 4.try-catch-finally语句 5.try-with-resources语句

    Java语言教程 2020年11月9日
    06170

发表回复

登录后才能评论