抽象类和接口

1.抽象类和抽象方法

抽象方法是没有方法体的,通过abstract进行修饰的方法就是抽象方法。

抽象类包含抽象方法的类。如果一个类包含一个或多个抽象方法,该类必须被限定为抽象类

// 抽象类
public abstract class AbstractTest {

    // 抽象方法
    public abstract void f();
}

抽象类的格式:

public abstract class 类名{
	成员变量;
	构造方法;
	成员方法;
	抽象方法;
}

注意

①抽象类不能实例化,只能作为父类被子类给继承。

②子类继承为抽象类的父类,则必须重写父类的抽象方法,除非子类也必须是一个抽象类。

// 抽象类
public abstract class AbstractTest {

    // 抽象方法
    public abstract void f();
}
// 抽象类的子类
// 子类为抽象类可以不用重写父类的抽象方法
abstract class AbstractTestSon extends AbstractTest{
    
    public abstract void f1();
}
class AbstractExtends extends AbstractTestSon{

    @Override
    public void f() {
        
    }

    @Override
    public void f1() {

    }
}

③抽象类可以有“构造方法”,为成员变量初始化使用。

④抽象类中可以没有抽象方法,当抽象方法必须在抽象类中。

2.接口

接口:在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。

特性:

①接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract

②接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量

接口的声明:

[访问权限] interface 接口名称 [extends 其他的接口名] {
        // 声明变量
        // 抽象方法
}
public interface InterfaceTest {

    int i = 1;   // public static final int i = 1
    
    void f();    // public abstract void f()
}

class InterfaceTestImpl implements  InterfaceTest{

    @Override
    public void f() {
    }
    
    public void f1(){
        System.out.println(InterfaceTest.i);
    }
}

补充:

①JDK1.8以后,接口可以包含静态方法和默认方法。

public interface InterfaceTest {

    // 静态方法
    static void f2() {
        System.out.println("f2");
    }
    
    // 默认方法
    default void f3(){
        System.out.println("f3");
    }
}

②JDK1.9以后,接口允许将方法定义为private方法。

posted @ 2022-07-23 16:04  Lyfzzz  阅读(49)  评论(0)    收藏  举报