java基础系列(九) 接口和抽象类
创始人
2024-05-30 21:37:12

一. 接口

简单的说,接口就是一种被规范的标准,只要符合这个标准都可以通用,接口的表现

在于对行为的抽象. 

1.1 创建接口的格式

格式1:  public interface 接口名

格式2:  interface 接口名

1.2  在JDK1.8之后, 在接口中可以定义实现的方法体是java8的一大特性,可以定义多个静态或者默认的方法, 下面的代码注释中说明了使用方法.

接口代码如下:

public interface Action {// 接口中都是抽象方法和常量,不可能有非抽象方法,常量必须被赋值。//接口中的方法默认是 public abstractpublic abstract void eat();//常量默认是 public static finalpublic static final int age = 20;//Java8中接口中引入默认方法和静态方法,以此来减少抽象类和接口之间的差异//静态方法public static void method() {/*** 1、定义一个静态的带有方法体的方法* 2、接口不能创建对象,调用静态方法不需要对象* 3、接口名直接调用:  Action.method();*/System.out.println("接口中静态方法");}//默认方法用default来修饰/*不同于静态方法,默认方法是一个非静态方法对于非静态方法,只能通过对象进行调用接口是不能直接new, 因此我们需要子类来实现接口** */default void methodDefault(){System.out.println("default method in interface");}}

验证方法:

public class TestInterface implements Action{@Overridepublic void eat() {System.out.println("实现接口中的eat方法");}public static void main(String[] args) {Action action = new TestInterface();//调用接口中defaut方法action.methodDefault();//调用接口中的static方法 直接用 接口.方法();Action.method();}
}

打印如下:


default method in interface接口中静态方法

1.3 接口有什么特点?

接口中声明全是public static final修饰的常量
接口中所有方法都是抽象方法
接口是没有构造方法的
接口也不能直接实例化
接口可以多继承

二. 抽象类和接口对比

抽象类是用来捕捉子类的通用特性的。接口是抽象方法的集合。
从设计层面来说,抽象类是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。

相同点:
接口和抽象类都不能实例化
都位于继承的顶端,用于被其他实现或继承
都包含抽象方法,其子类都必须覆写这些抽象方法

不同点:


抽象类接口

抽象类使用abstract关键字声明接口使用interface关键字声明

子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现子类使用implements关键字来实现接口。它需要提供接口中所有声明的方法的实现


抽象类可以有构造器接口不能有构造器
访



抽象类中的方法可以是任意访问修饰符

接口方法默认修饰符是public. 并且

不允许定义为 private 或者protected

一个类最多只能继承一个抽象类一个类可以实现多个接口

抽象类的字段声明可以是任意的接口的字段默认都是 static 和 final

备注:Java8中接口中引入默认方法和静态方法,以此来减少抽象类和接口之间 的差异。
现在,我们可以为接口提供默认实现的方法了,并且不用强制子类来实现它。

接口和抽象类各有优缺点,在接口和抽象类的选择上,必须遵守这样一个原则:


1 . 行为模型应该总是通过接口而不是抽象类定义,所以通常是优先选用接口,尽量 少用抽象类。
2.   选择抽象类的时候通常是如下情况:需要定义子类的行为,又要为子类提供通用 的功能。

相关内容

热门资讯

伊朗称已停止履行伊美谅解备忘录 转自:新华社新华财经德黑兰7月19日电(记者沙达提)据伊朗塔斯尼姆通讯社18日报道,伊朗副外长加里巴...
4名未成年人溺亡!警方提示→ 转自:中华人民共和国应急管理部当前暑期叠加汛期溺水事故进入高发期7月17日湖北警方公布该省近期4起真...
传承创新粤剧曲艺,广州荔湾曲艺... 7月17日晚,“青春粤韵 传承有我”——2026荔湾区青年粤剧曲艺传承创新展演在广州文化公园中心台上...
688146,16倍大牛股,核... 下周解禁市值合计超510亿元。周五晚间,科创板首份2026年半年报发布, 中船特气(688146) ...