JavaSE——面向对象:接口

什么是接口:

  • 硬件接口:指的是两个硬件设备之间的连接方式。硬件接口既包括物理上的接口,还包括逻辑上上的数据传输协议。
  • 软件接口:程序代码,特殊的类。表示一种规范,是具有N个方法的特征集合。

    在封装时,显示器封装了很多电子元件,最终向外暴露数据交互的孔——>>接口,目的在于实现设备和设备之间的通信。

   

    002052_GXoz_3746823.png

     在Java中,接口表示一种规范/约束/要求实现者必须遵循该规范。用来约束使用者该怎么做。

 

Java中的接口

    专家说:多个抽象类的抽象就是接口。

    说人话:在Java中最小的程序单元就是类,接口其实是一个特殊的类。

Java中的接口表示规范,用于定义一组抽象方法,表示某一类事务必须具备的功能,要求实现类必须来实现该接口并提供方法实现。

004904_IIkF_3746823.png

//演示接口
interface IConnect{
	String PI= "aaa";	//接口中的成员变量
	void doWork();		//接口中的方法
	interface IWatch{	//		接口中的类(接口)
		
	}
	
}

public class InterfaceTest {

	public static void main(String[] args) {
		
		System.out.println("AA");
	}

}

005029_wzKx_3746823.png

接口的定义和继承

012645_ScWd_3746823.png

012727_HbLH_3746823.png

    类和类之间是继承关系:用extends来表示。

    接口和接口之间只能是继承关系:用extends来表示。

    接口和实现类之间只能是实现关系:用implements来表示。

    

接口的实现

215708_w5og_3746823.png

程序示例

interface PaXing{

	void doWork();		//接口中的方法
	
}

interface ShuiXing{

	void doSwim();		//接口中的方法
	
}

interface LiangQi extends PaXing,ShuiXing{  //接口的继承

	void doSwim();		//接口中的方法
	
}

class YYY implements LiangQi{	//类实现子类接口
	public void doWork(){
		System.out.println("This is YYY dowork Cat!");
	}
	public void doSwim(){
		System.out.println("This is YYY dowork Cat!");
	}
}

 class SSS implements PaXing,ShuiXing{  //类实现多接口
	public void doWork(){
		System.out.println("This is SSS dowork Cat!");
	}
	public void doSwim() {
		System.out.println("This is SSS doswim Cat!");
	}
}
 
 class Fish implements ShuiXing{	//类实现单接口
	 public void doSwim(){
		 System.out.println("This is Fish doswim fish!");
	 }
 }

public class InterfaceTest {

	public static void main(String[] args) {
		
		SSS a=new SSS();	
		a.doSwim();
		a.doWork();
		System.out.println("****************");
		
		PaXing d= new SSS();	
		d.doWork();   //没有doSwim()方法
		
		System.out.println("****************");
		YYY b=new YYY();	//鄙视写法
		b.doSwim();
		b.doWork();
		System.out.println("****************");
		
		LiangQi c= new YYY();	//高级多态写法,面向接口编程。
		c.doSwim();
		c.doWork();
		System.out.println("****************");
		
		ShuiXing fish1= new Fish();
		fish1.doSwim();
	
	}

}

运行结果

This is SSS doswim Cat!
This is SSS dowork Cat!
****************
This is SSS dowork Cat!
****************
This is YYY dowork Cat!
This is YYY dowork Cat!
****************
This is YYY dowork Cat!
This is YYY dowork Cat!
****************
This is Fish doswim fish!

接口和抽象类的区别

    相同点

  • 都位于继承的顶端,用于被其他实现或继承。
  • 都不能实例化
  • 都可以定义抽象方法,其子类/实现类都必须覆写这些抽象方法。

    不同点

  • 接口没有构造方法,抽象类有。
  • 抽象类可包含抽象方法和普通方法,接口只能包含抽象方法(Java8之前)。
  • 类是单继承(可能是继承抽象类),却可以实现多个接口。接口是多继承。(接口弥补了java的单继承)
  • 成员变量:接口默认是public static final,抽象类是默认包权限。
  • 方法:接口里默认是public abstract ,抽象类默认是默认包访问权限。
  • 内部类:接口里默认是public static,抽象类默认是默认包访问权限。

    如果接口和实现类可以完成相同的功能,尽量使用接口,面向接口编程。

 

转载于:https://my.oschina.net/u/3746823/blog/1605870

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值