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();

}

抽象类和接口的区别

补充:

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

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

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

相关推荐
远望清一色5 分钟前
基于MATLAB的实现垃圾分类Matlab源码
开发语言·matlab
confiself15 分钟前
大模型系列——LLAMA-O1 复刻代码解读
java·开发语言
Wlq041520 分钟前
J2EE平台
java·java-ee
XiaoLeisj26 分钟前
【JavaEE初阶 — 多线程】Thread类的方法&线程生命周期
java·开发语言·java-ee
杜杜的man30 分钟前
【go从零单排】go中的结构体struct和method
开发语言·后端·golang
幼儿园老大*31 分钟前
走进 Go 语言基础语法
开发语言·后端·学习·golang·go
半桶水专家31 分钟前
go语言中package详解
开发语言·golang·xcode
llllinuuu32 分钟前
Go语言结构体、方法与接口
开发语言·后端·golang
cookies_s_s33 分钟前
Golang--协程和管道
开发语言·后端·golang
王大锤439135 分钟前
golang通用后台管理系统07(后台与若依前端对接)
开发语言·前端·golang