java接口方法及回调

在介绍接口前先给大家讲一下什么是: final
final:

对成员属性声明 final 是一个最终的, 最后的,也是不可更改的
可以修饰:

  1. 可以修饰类

    被final修饰的类称之为最终类, 不能被其它类继承(不能有子类)

  2. 可以修饰方法

    被final修饰的方法称之为最终方法, 不能被子类重写/覆盖

  3. 可以修饰变量

    被final修饰的变量称之为常量, 一旦确定值以后不能被修改
    ---- 常量只能被赋值一次、常量名称一般都会大写

    普通成员常量赋值方式:

    1. 直接显示赋值
    2. 构造方法赋值
    3. 动态代码块赋值
// 修饰类
final class A{
}
// 修饰方法
public final void test(){
}
// 修饰变量
public static final int MAX_NUM;

静态常量

将一个变量使用static final进行修饰, 称之为静态常量

  • 值一旦确定不能被修改
  • 调用时可以直接使用类名.静态变量名的方式

静态常量的赋值方式:

  • 直接显式赋值
  • 静态代码块中赋值

什么是接口

接口其实就是一种特殊的抽象类

抽象类中可以包含:
		
		成员属性
		成员方法
		构造方法
		抽象方法

	接口中可以包含:

		1. 抽象方法
		2. 静态常量

	接口是一种标准/规范

具体类: 对现实世界中某一种具体事物的抽象描述(特征, 行为)Person

抽象类: 对现实世界中相同类型的多种事物进行抽象描述

接口: 对现实世界中不同类型的多种事物进行抽象描述

接口只负责定义,而不负责具体的实现

接口中不能包含:

  1. 构造方法
  2. 成员方法

接口只能包含:

  1. 抽象方法
  2. 静态常量

如何定义一个接口, 这里需要用到关键字(interface)

interface 接口名称{
	// 抽象方法
	public abstract void test();
}

具体类实现接口:

需用到: implements

public class Test1 implements 接口名称{
}

如果一个具体类实现了指定的接口, 那么该具体类必须实现该接口中所有的抽象方法

如果只实现了其中一部分抽象方法, 那么该具体类必须声明抽像类

实现了指定接口的具体类可以称之为具体实现子类

与抽象类的区别:

相同点:
	1. 可编译成为字节码文件
	2. 不能被实例化
	3. 可以作为引用类型(多态)
	
不同点:
	1. 所有的属性都是: public static final 修饰
	2. 所有的方法都是: public abstract 修饰
	3. 没有构造方法, 静态代码块, 动态代码块

其它特点:

1. Java语言只能实现单继承, 但可以实现多个接口

	class 类名 extends 父类名 implements 接口名1, ... 接口名N{
	}
2. 接口可以继承接口, 而且可以继承多个接口

3. 接口不能实现其它接口

常量接口

在一个接口中只定义静态常量
方便统一管理, 提高代码的可读性

// 常量接口
interface Contants{
    // qq状态
    public static final int LINE = 100;  //在线
    public static final int HIDE = 200;  // 隐身
    public static final int NLINE = 300;  // 离线
    public static final int WORK = 400;  // 忙碌
    public static final int OUT = 500;  // 离开
}

接口回调

直接调用接口中的相应方法(使用多态的方式来调用)

public class Demo{
	public static void main(String[] args){
		// 这里就是多态
		Usb mouse = new Mouse();
		Usb keyboard = new Keyboard();

		Computer c = new Computer();
		c.on(mouse);
		c.on(keyboard);
	}
}

interface Usb{
	public abstract void service();
}

class Mouse implements Usb{
	public void service(){
		System.out.println("鼠标");
	}
}

class Keyboard implements Usb{
	public void service(){
		System.out.println("键盘");
	}
}

/*class Computer{
	private Usb usb;
	public Computer(){}
	public Computer(Usb usb){
		this.usb = usb;
	}
	public void on(){
		usb.service();
	}
}*/

class Computer{
	public void on(Usb usb){
		usb.service();
	}
}
最后终结:
  1. 接口中只能包含: 抽象方法与静态常量
  2. 接口可以继承其它接口且可以继承多个接口
  3. 接口不能实现其它接口
  4. 具体实现子类使用implements关键字实现指定的接口, 且可以实现多个接口
  5. 具体实现子类必须重写/覆盖接口中所有的抽象方法
    – 如果没有全部重写/覆盖的话, 那么该实现子类必须声明为抽象类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值