3.3Java语言的抽象类(Abstract)和接口(Interface)

1.抽象类(Abstract Class)

类是对象的抽象,抽象类是类的更高一个层次的抽象,所以抽象类是一个“不完整的类”。

抽象类可以包含静态变量和实例变量。

抽象类中不一定包含抽象方法,但是包含抽象方法的类必须被定义为抽象类。

abstract class 类名 {
    abstract 返回类型 方法名(参数);
}
  • abstract 修饰的方法是抽象方法,它只有定义,没有实现。
  • abstract 修饰符只能用于普通方法,不能用于 static 方法或者构造方法。
  • abstract 修饰的抽象方法时不能使用 private 修饰,否则子类是无法重写的。

1.1抽象类的继承

抽象类与类一样,只支持单继承,从抽象类继承的子类必须实现抽象方法。

1.2抽象类的实例化

抽象类不能实例化,也就是说不能使用 new 关键字创建对象。

2.接口(Interface)

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

接口所声明的成员变量全部是静态常量,即便是变量不加public static final修饰符也是静态常量。

Java 8之前接口中只有抽象方法,而Java 8之后接口中也可以声明具体方法,具体方法通过声明默认方法实现。

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

2.1接口的继承

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

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

例如:

interface Hello {
    void hello();
}

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

2.2接口的实现(implements)

一个类可以使用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;
    }
}

2.3接口的变量

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

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

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

发表评论

登录后才能评论