初学Java(其五:接口)

接口

理解接口

  • 接口和类很相似,分为接口声明和接口体,接口用interface声明
  • 接口体只有抽象方法,且访问权限都为public ,static常量
  • 抽象方法在声明时允许省略public abstract

(1)接口可以抽象出重要的行为标准,该行为标准用抽象方法来表示。
(2)可以把实现接口的类的对象的引用赋值给接口变量,该接口变量可以调用被该类实现的接口方法,即体现该类根据接口里的行为标准给出的具体行为。

接口与实现

  • 接口由类来实现以便使用接口方法,一个类需要在声明中使用implements声明该类实现一个或多个接口。
  • 如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法。需要注意的是,由于接口中的方法一定是public abstract方法,所以类在重写接口方法时不仅要去掉 abstract 修饰符、给出方法体,而且方法的访问权限一定要明显地用public来修饰(否则就降低了访问权限,这是不允许的)。实现接口的非抽象类实现了该接口中的方法,即给出了方法的具体行为功能。
  • 如果父类实现了某个接口,那么子类也就自然实现了该接口,子类不必再显式地使用关
    键字implements声明实现这个接口。

接口的UML图

在这里插入图片描述和类类似

接口回调*

“接口回调”一词是借用了C语言中指针回调的术语,表示一个变量的地址在某一个时刻存放在一个指针变量中,那么指针变量就可以间接操作该变量中存放的数据。
在Java语言中,接口回调是指:可以把实现某一接口的类,创建的对象的引用,赋值给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法。实际上,当接口变量调用被类实现的接口方法时,就是通知相应的对象调用这个方法。
我们举个例子:

interface Com{	//声明一个接口
	void fun();//这是一个public abstract的方法(public static可省略)
}
class ImpleCom implement Com{	//声明实现接口的类
	public static void fun(){	//实现接口的方法(重写)
		System.out.println("实现了接口");
	}
	public void f(){
		System.out.println("随便一个方法");
	}
}
public class test {
	public static void main(String[] args) {
	Com com;	//cut是接口型变量
	ImpleCom object = new ImpleCom;	//implement是类创建的对象的引用
	com = object;	//赋值后,com可调用ImpleCom实现的接口的方法,只能是Com接口的方法
	com.fun();//com不能调用f(),因为此方法Com接口没有

输出结果:
在这里插入图片描述
在这里插入图片描述

接口与多态

接口产生的多态指在接口被多个类以不同实现方式实现的时候,接口变量通过回调可以调用不同的实现方法。

接口参数

如果一个方法的参数是接口类型,我们就可以将任何实现该接口的类的实例的引用传递给该接口参数,那么接口参数就可以回调类实现的接口方法。
不理解?没关系!,看下面例子再来看这个例子:

interface Greet {
	public abstract void Greet();
}

class Dog implements Greet {
	public void GreetSpeak() {//实现接口
		System.out.println("汪汪汪~");
	}
}

class Cat implements Greet {
	public void GreetSpeak() {//实现接口
	System.out.println("喵喵喵~");
	}
}

class Meet{
	public void Speak(Greet hello) {//声明一个有接口参数的方法,如果括号里是实现接口的类,则回调方法也不同
		hello.GreetSpeak();//接口回调
	}
}

public class test {
	public static void main(String [] args) {
	Meet meet = new Meet();
	meet.Speak(new Dog());
	meet.Speak(new Cat());
	}
}

接口参数与接口回调关联性较强

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值