Java--面向对象--接口

接口的概念与定义

接口可以理解为抽象到不能再抽象的类,但是不要将接口和类混为一谈。可以认为类是一套体系,接口是另外一套体系,只不过类可以实现接口。

接口中的方法全部都是抽象方法,不能存在实现的方法。

接口使用interface关键字定义,接口的定义和类很相似。下面是经过简化的接口的一般形式:

access interface name {

return-type method-name1(parameter-list); //可以省略各种修饰符

return-type method-name2(parameter-list);

...

return-type method-nameN(parameter-list);

type varname1 = value; //可以省略各种修饰符

type varname2 = value;

..

type varnameN = value;

}

接口中的属性和方法

(1)接口中所有方法默认是公有的抽象方法。

隐式地标识为public、abstract,并且接口中的方法也只允许使用这两个修饰符。

注意,在抽象类中必需使用abstract关键字明确指定方法为抽象方法。

(2)在接口中所有变量默认为公有的静态常量。

被隐式地标识为public、static、final。这意味着实现接口的类不能修改它们。同时还必须初始化它们。

public interface A1 {

//接口中的属性必须public、static、final常量

public static final int I=10;

//接口中的属性public、static、final都可以省略

int J = 100;

//接口中的方法默认是public、abstract,所以public abstract可以省略

public abstract void print();

public void print2();

void print3();

}

注意:

接口能new对象吗?不可以

接口能作为一种类型定义引用变量吗? 可以 A1 a;

接口的实现

一旦定义了一个接口,一个或多个类就可以实现该接口。为了实现接口,在类定义中需要包含implements子句,然后创建接口定义的方法。

class classname implements interfacename {

//

}

注意:

(1)实现接口的类,必须实现接口的所有抽象方法,如果只实现了部分抽象方法,该类必须声明为抽象类。

(2)一个类可以实现多个接口,实现的多个接口用","隔开

(3)实现接口的类可以同时继承一个超类,必须是先继承后实现。

public interface A1 {

//接口中的属性必须是 public static final 常量

public static final int I=10;

//接口中的属性 public static final都可以省略

int J = 100;

//接口中的方法都是 public abstract 所以public abstract可以省略

public abstract void print();

public void print2();

void print3();

}

public interface A2 {

void show();

}

/**

* 类实现接口 使用implements

* 类可以实现多个接口,用 , 隔开

* 一个具体的类,实现接口,必须实现接口的所有抽象方法

* @author Administrator

*/

public class SubA implements A1,A2{

@Override

public void print() {

}

@Override

public void print2() {

}

@Override

public void print3() {

}

@Override

public void show() {

}

}

说明:

接口定义了一组抽象方法,实现该接口的类需要实现这些抽象方法,从而实现接口的类就具备了接口所规定的行为(功能)。

在Java中,接口可理解为对象间相互通信的协议,相当于模板。

接口的继承

接口可以通过关键字extends继承另一个接口,其语法和类继承相同。如果类实现的接口继承自另外一个接口,则该类必需实现在接口继承链中定义的所有方法。

接口的实例

实例1

public interface Shape {

double area();

void show(); //打印输出类的成员信息

void draw(); //我是XXX(矩形、圆形、三角形)

}

定义Rectangle、Circle、Triangle类,添加适当的属性,并实现Shape接口

定义测试类测试Rectangle、Circle、Triangle类。在测试类中定义一个Shape[]数组,在该数组中存储不同的形状对象。通过循环,分别调用各个对象的area()、show()、draw()方法。

实例2

public interface IntStack {

void push(int item);

int pop();

}

抽象类和接口的区别

补充:

抽象类有构造方法,接口没有构造方法

类只能单继承,接口可以多重继承接口

抽象类中可以没有抽象方法,但是有抽象方法的类必须是抽象类。

相关推荐
我真的不会C5 分钟前
QT窗口相关控件及其属性
开发语言·qt
CodeCraft Studio5 分钟前
Excel处理控件Aspose.Cells教程:使用 Python 在 Excel 中进行数据验
开发语言·python·excel
.生产的驴10 分钟前
SpringBoot 封装统一API返回格式对象 标准化开发 请求封装 统一格式处理
java·数据库·spring boot·后端·spring·eclipse·maven
火柴盒zhang11 分钟前
websheet之 编辑器
开发语言·前端·javascript·编辑器·spreadsheet·websheet
猿周LV17 分钟前
JMeter 安装及使用 [软件测试工具]
java·测试工具·jmeter·单元测试·压力测试
景天科技苑18 分钟前
【Rust】Rust中的枚举与模式匹配,原理解析与应用实战
开发语言·后端·rust·match·enum·枚举与模式匹配·rust枚举与模式匹配
晨集19 分钟前
Uni-App 多端电子合同开源项目介绍
java·spring boot·uni-app·电子合同
时间之城22 分钟前
笔记:记一次使用EasyExcel重写convertToExcelData方法无法读取@ExcelDictFormat注解的问题(已解决)
java·spring boot·笔记·spring·excel
阿让啊24 分钟前
C语言中操作字节的某一位
c语言·开发语言·数据结构·单片机·算法
椰羊~王小美29 分钟前
LeetCode -- Flora -- edit 2025-04-25
java·开发语言