java什么是接口回调(java接口的作用和意义)
程序员文章站
2023-11-16 22:50:10
前言接口是java中的一个重要的类型,实际项目开发中会大量使用到接口,也称为:面向接口编程,本章将详细介绍接口的概念和使用以及内部类。接口接口是什么生活中的接口如电脑上的usb接口,规范了接口的形状、...
前言
接口是java中的一个重要的类型,实际项目开发中会大量使用到接口,也称为:面向接口编程,本章将详细介绍接口的概念和使用以及内部类。
接口
接口是什么
生活中的接口如电脑上的usb接口,规范了接口的形状、尺寸等,只要符合该规范的设备就可以连接上去。
程序中的接口是一套规范,规定了方法的定义,只要是实现了该接口的类必须按照接口的规范来定义。
使用接口
定义接口的语法:
public interface 接口名{
静态常量的定义;
方法的定义;
}
定义接口要注意:
- 方法是abstract的,不能实现
- 定义的属性会自动转变为静态常量
- 方法只能是public的,默认是public
实现接口
public class 类名 implements 接口名{
具体方法的实现
}
实现接口要注意:
- 必须实现所有接口中的方法
- 方法必须和接口中定义的完全一致
- 方法必须是public的
- 一个类可以实现多个接口
- 一个类可以继承类同时实现接口
class 类名 extends 父类 implements 接口{
}
- 接口可以继承接口,实现类必须实现所有的方法
interface a{
void testa();
}
//接口之间的继承
interface b extends a{
void testb();
}
class c implements b{
public void testa() {
}
public void testb() {
}
}
接口在开发中的意义
- 为类的实现制定一套规范
- 把设计和实现分开
default关键字
java1.8的新特性,被default定义的方法可以有默认的实现。
public interface person {
//给接口方法默认的实现
default void eat(){
system.out.println("在吃饭!!");
}
void walk();
}
实现类不强制要求实现带default的方法。
接口与抽象类的异同
接口和抽象类的区别是常见的面试题相同点:
- 都可能存在没有实现的方法
- 都不能实例化
不同点:
- 抽象类是单一继承,类可以实现多个接口
- 接口不能定义构造方法
- 接口中的方法只能是public,抽象类可以有各种访问类型的方法。
- 接口中只能定义静态常量,抽象类可以定义普通的成员变量。
- 接口中的抽象方法不用加abstract,抽象类必须加。
内部类
内部类就是在类里面定义的类。java的内部类包含:
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类
成员内部类
和成员变量(属性)、成员方法同级的,都是属于某一个对象所有的。语法:
class 外部类{
class 内部类{
...
}
}
特点:
- 一般只在外部类的里面使用
- 成员内部类和类的属性和方法同一级别。
- 属于类的对象,在创建每个对象时加载到内存
静态内部类
成员内部类加上static,就是静态内部类语法:
public class 外部类{
static class 内部类{
}
}
和成员内部类的区别:
- 成员内部类属于对象,静态内部类属于外部类
- 成员内部类每创建一个对象加载一次,静态内部类和外部类一起加载
- 成员内部类能访问外部类的所有成员,静态内部类只能访问外部类静态的成员
局部内部类
在方法中定义的类,只能在当前方法中使用,方法调用时加载类到内存中。语法:
class 外部类{
public void test(){
class 内部类{
}
内部类 对象 = new 内部类();
}
}
匿名内部类
一个没有名字的内部类,创建类的同时创建了对象。应用场合:接口或抽象类的实现类只需要使用一次,代码是一次性的。语法:
new 接口/抽象类()
{
实现方法
};
实现usb案例
//usb接口
interface usb{
void connect(); //连接
void charge(); //充电
}
//匿名内部类实现接口
usb usb = new usb(){
public void connect(){
system.out.println("test2测试连接");
}
public void charge(){
system.out.println("test2测试充电");
}
};
usb .connect();
usb .charge();
和一般类的区别:
- 没有名字
- 只能使用一次
- 没有构造方法
- 不能定义静态成员
面试题:在?处填写什么可以在控制台输出30,20,10。
class outer {
public int num = 10;
class inner {
public int num = 20;
public void show() {
int num = 30;
system.out.println(?); num
system.out.println(?); this.num
system.out.println(?); outer.this.num
}
}
}
class innerclasstest {
public static void main(string[] args) {
outer.inner oi = new outer().new inner();
oi.show();
}
}
结束
留两个作业:
- 定义播放器接口,播放音乐方法;定义游戏机接口,玩游戏方法;定义电话类,有品牌和价格属性,和打电话方法定义手机类继承电话并实现播放器和游戏机接口
- 定义算术接口,分别定义加减乘除四个方法,每个方法都有两个double参数,返回值为double。使用常规类和匿名内部类两种方式实现接口。
推荐阅读
-
java什么是接口回调(java接口的作用和意义)
-
java中为什么接口中的属性和方法都默认为public?
-
Java 是如何利用接口避免函数回调的方法
-
浅谈Java中向上造型向下造型和接口回调中的问题
-
java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念
-
java中为什么接口中的属性和方法都默认为public?
-
Java 是如何利用接口避免函数回调的方法
-
Java抽象类和接口分别是什么?Java抽象类和接口的简单介绍(实例)
-
Java抽象类和接口分别是什么?Java抽象类和接口的简单介绍(实例)
-
java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念