博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中的接口
阅读量:2442 次
发布时间:2019-05-10

本文共 1802 字,大约阅读时间需要 6 分钟。

java中的接口

1.1 接口的概述

接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。

接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。

1.2 接口的格式&使用

1.2.1 接口的格式

 与定义类的class不同,接口定义时需要使用interface关键字。

定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文件。这点可以让我们将接口看做是一种只包含了功能声明的特殊类。

定义格式:

public interface接口名 {

抽象方法1;

抽象方法2;

抽象方法3;

}

 

1.2.2 接口的使用

接口的方法全是抽象方法,直接new接口来调用方法没有意义,Java也不允许这样干

类与接口的关系为实现关系,即类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements

其他类(实现类)实现接口后,就相当于声明:”我应该具备这个接口中的功能”。实现类仍然需要重写方法以实现具体的功能。

格式:

classimplements接口 {

重写接口中方法

}

在类实现接口后,该类就会将接口中的抽象方法继承过来,此时该类需要重写该抽象方法,完成具体的逻辑

案例代码一

package com.itheima_01;/* * Java语言的继承是单一继承,一个子类只能有一个父类(一个儿子只能有一个亲爹) * Java语言给我们提供了一种机制,用于处理继承单一的局限性的,接口 *  * 接口:接口是一个比抽象类还抽象的类,接口里所有的方法全是抽象方法,接口和类的关系是实现,implements * interface *  * 格式: * 		interface 接口名 { *  * 		} *  */public class InterfaceDemo {	public static void main(String[] args) {		BillGates gates = new BillGates();		gates.code();	}}class Boss {	public void manage() {		System.out.println("管理公司");	}}class Programmer {	public void code() {		System.out.println("敲代码");	}}//比尔盖茨class BillGates extends Programmer {	}

1.1 接口中成员的特点

1、接口中可以定义变量,但是变量必须有固定的修饰符修饰,public static final所以接口中的变量也称之为常量,其值不能改变。后面我们会讲解fnal关键字

2、接口中可以定义方法,方法也有固定的修饰符,public abstract

3、接口不可以创建对象。

4、子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化。否则子类是一个抽象类。

1.1.1 案例代码二:

package com.itheima_01;/* * 接口的成员特点: * 		只能有抽象方法 * 		只能有常量 * 		默认使用public&abstract修饰方法 * 		只能使用public&abstract修饰方法 * 		默认使用public static final来修饰成员变量 *  * 建议:建议大家手动的给上默认修饰符 *  * 注意: * 		接口不能创建对象(不能实例化) * 		类与接口的关系是实现关系,一个类实现一个接口必须实现它所有的方法 */public class InterfaceDemo2 {	public static void main(String[] args) {		//Animal a = new Animal();		//Animal.num;	}}interface Animal {	public static final int num = 10;		public abstract void eat();}class Cat implements Animal {	public void eat() {			}	}

转载地址:http://ijjqb.baihongyu.com/

你可能感兴趣的文章
c++变量_C ++变量
查看>>
机器学习ml_机器学习简介(ML)
查看>>
c# 搜索 二进制_C中的二进制搜索
查看>>
stl:map用法_C ++ STL无序映射– std :: unordered_map
查看>>
c++ 意外的令牌标识符_C ++令牌–关键字,常量,标识符,字符串,运算符和特殊符号
查看>>
stl set是无序的_C ++ STL无序集– std :: unordered_set
查看>>
stl multimap_C ++ STL多图容器– std :: multimap
查看>>
python选择排序_Python选择排序
查看>>
队列stl queue<>_C ++ STL队列容器适配器– std :: queue
查看>>
队列stl queue<>_C ++ STL优先级队列– std :: priority_queue
查看>>
SQL Server调整以实现更快的查询
查看>>
pl/sql打印_PL / SQL程序打印图案
查看>>
c++stl和std_C ++ STL多集容器– std :: multiset
查看>>
pl/sql查找表_PL / SQL程序查找三个数中的最大值
查看>>
Mac的Movavi屏幕捕获–录制视频的简单解决方案
查看>>
stl 容器适配器_C ++ STL堆栈容器适配器– std :: stack
查看>>
如何开始虚拟现实(VR)开发?
查看>>
Fresco Android教程
查看>>
c++中将字符串转化为数字_在C和C ++中将十进制数转换为罗马数字
查看>>
unity 粒子系统反弹_零反弹-最佳电子邮件验证系统
查看>>