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

}

抽象类和接口的区别

补充:

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

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

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

相关推荐
leo825...3 分钟前
Claude Code Skills 清单(本地)
java·python·ai编程
csbysj20206 分钟前
SQL NULL 函数详解
开发语言
其实防守也摸鱼9 分钟前
CTF密码学综合教学指南--第三章
开发语言·网络·python·安全·网络安全·密码学
NGSI vimp10 分钟前
Java进阶——如何查看Java字节码
java·开发语言
We་ct1 小时前
深度剖析浏览器跨域问题
开发语言·前端·浏览器·跨域·cors·同源·浏览器跨域
身如柳絮随风扬1 小时前
多数据源切换实战:从业务场景到3种实现方案全解析
java·分布式·微服务
skywalk81631 小时前
在考虑双轨制,即在中文语法的基础上,加上数学公式的支持,这样像很多计算将更加简单方便,就像现在的小学数学课本里面一样,比如:定x=2*x + 1
开发语言
小书房1 小时前
Kotlin的by
android·开发语言·kotlin·委托·by
就叫飞六吧2 小时前
QT写一个桌面程序exe并动态打包基本流程(c++)
开发语言·c++
threelab2 小时前
Three.js 代码云效果 | 三维可视化 / AI 提示词
开发语言·javascript·人工智能