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

}

抽象类和接口的区别

补充:

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

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

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

相关推荐
学到头秃的suhian1 小时前
Maven
java·maven
QX_hao1 小时前
【Go】--反射(reflect)的使用
开发语言·后端·golang
小坏讲微服务1 小时前
Docker-compose 搭建Maven私服部署
java·spring boot·后端·docker·微服务·容器·maven
chxii1 小时前
Maven 详解(下)
java·maven
inferno1 小时前
Maven基础(二)
java·开发语言·maven
杨武博1 小时前
关于maven中pom依赖冲突问题记录
java·maven
我是李武涯2 小时前
从`std::mutex`到`std::lock_guard`与`std::unique_lock`的演进之路
开发语言·c++
史不了3 小时前
静态交叉编译rust程序
开发语言·后端·rust
陈果然DeepVersion3 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(十)
java·spring boot·ai·kafka·面试题·向量数据库·rag
读研的武3 小时前
DashGo零基础入门 纯Python的管理系统搭建
开发语言·python