接口和抽象类的区别

1. 接口

1.1 定义

接口是一种规范,是对行为的抽象,接口中不包含任何具体实现(Java 8 及更高版本中允许默认方法)

public interface demo {
    public static final String field = "sanjin";

    public abstract void method();

    default void defaultMethod() {
        System.out.println("这是一个默认" + field + "实现");
    }
}

class implClass implements demo {

    @Override
    public void method() {
        System.out.println("接口方法实现111");
    }
}

class run {
    public static void main(String[] args) {
        implClass implClass = new implClass();
        implClass.method();
        implClass.defaultMethod();
    }
}
-------------------------结果---------------------------
接口方法实现111
这是一个默认sanjin实现

1.2 特点

  • 使用 interface 关键字

  • 方法默认是 publicabstract

  • 字段默认是 public static final,必须初始化

  • 一个类可以实现多个接口(接口之间可以多继承)

  • 实现接口时,必须重写接口中定义的所有方法

 

2. 抽象类

2.1 定义

是一种模板,是一种不能直接实例化的类,用于共享通用的代码实现,同时允许子类提供具体实现,强调“复用”,可以包含抽象方法(没有实现的方法)和具体方法(有实现的方法)

public abstract class demo {
    // 字段
    private String field1;
    private static final String field2 = "sanjin";

    // 方法
    public void method1() {
        System.out.println("模板方法" + field2);
    }
    // 抽象方法类似接口方法,只能是public abstract修饰
    public abstract void method2();

}

class implClass extends demo{

    @Override
    public void method2() {
        System.out.println("模板方法之外的个性化实现");
    }
}

class run {
    public static void main(String[] args) {
        implClass implClass = new implClass();
        implClass.method1();
        implClass.method2();
    }
}

--------------------------结果-------------------------------
模板方法sanjin
模板方法之外的个性化实现

2.2 特点

  • 使用 abstract class 关键字
  • 可以有抽象方法(声明但无实现)和具体方法
  • 可以声明普通字段(无修饰符限制),允许初始化或未初始化
  • 一个类只能继承一个抽象类(单继承)
  • 子类继承抽象类时,必须实现所有抽象方法(子类只需关注差异化实现)

 

3. 区别

  1. 字段:接口只能是public static final,抽象类无所谓

  2. 方法:接口只能是public abstract,抽象类只有抽象方法是 public abstract 或者 protected abstract

  3. 接口多实现,抽象类单继承

  4. 规范和模板的区别

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇