java interface 介绍

interface类似于class,只不过interface里的所有方法都是abstract抽象的,当一个非抽象的class实现(implements)一个接口interface时,必须实现接口中所有方法(因为都是abstract抽象的),否则该class必须声明为abstract.

------------

sample1:

/*interface usage*/
public class InterfaceSample {
	
	public static void main(String[] args) {
		new Ball().basketball();
		new Ball().football();
	}

}

interface Sport{
	void basketball(); //default public abstract
	void football();
}

class Ball implements Sport{

	@Override
	public void basketball() {
		System.out.println("hello, basketball!");
		
	}

	@Override
	public void football() {
		System.out.println("hello, football!");
	}
	
}

output:

hello, basketball!
hello, football!

-------------------------

sample2: 不同类通过接口实现通讯:

public class InterfaceSample2 {

	public static void main(String[] args) {
		GoodPeople p = new GoodPeople();
		GetInfo info = new GetInfo();
		info.setPeople(p);
		System.out.println(info.getName()+ " is "+info.getDoing());
	}

}

interface People{
	String name();
	String doing();
}

class GoodPeople implements People{

	@Override
	public String name() {
		return "dylan";
	}

	@Override
	public String doing() {
		return "donating";
	}
	
}

class GetInfo{
	People p;
	void setPeople(People p){
		this.p = p;
	}
	String getName(){
		return p.name();
	}
	String getDoing(){
		return p.doing();
	}
}

output:

dylan is donating


注意点:

1、一个接口可以继承(extends)自另一个接口
2、不允许类的多继承,但允许接口的多继承(同时继承多个接口)
3、类可以实现多个接口
4、类在继承另一个类的同时,可以实现多个接口,先extends后implements

-------------------------

dylan  presents.



posted @   一锤子技术员  阅读(6)  评论(0编辑  收藏  举报  
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示