(JavaSE)十五、接口与实现

本文深入解析Java接口的概念,探讨硬件与软件接口的区别,详细介绍Java接口的定义、特点及与抽象类的对比,通过实例演示接口的使用,帮助读者理解接口在程序设计中的作用。

什么是接口:

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

接口只定义了类应当遵循的规范却不关心这些类的内部数据和其功能的实现细节站在程序角度上接口只规定了类里必须提供的方法,从而分离了规范和实现,增强了系统的可拓展性和可维护性。

规范和实现相分离的好处:主板上提供了USB插槽,只要一个遵循了USB规范的鼠标,就可以插入USB插槽,并与主板正常通信。至于这个鼠标是谁生产的,内部是如何实现的,主板都不需要关心(只要遵循了USB规范就可以插在主板上使用)。

Java中的接口:

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

简单来说Java中最小的程序单元就是类,接口其实是一个特殊的类.

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

定义接口语法  

[public]   interface   接口名{

                  抽象方法

              }

 

接口存在的成员:

     1):接口中没有构造器,推论接口不能创建对象(不能 new ),接口中不能定义普通方法.

     2):接口中定义的成员变量,实质是全局静态常量,默认使用  public static final来修饰.

              public static final String NAME = "龙17";

     3):接口中定义的方法都是公共的抽象方法,默认的使用  public abstract 来修饰方法.

              public abstract void walk();   一般的,我们在接口中定义方法,不喜欢使用修饰符.

     4):接口中定义的内部类都是公共的静态内部类,默认使用public  static来修饰内部类.

              public static interface ABC{}        

接口的特点和接口的继承:

接口的特点

① 没有构造方法,也不能显示定义构造器不能实例化

② 接口只能继承接口,不能继承类,且接口支持多继承(类是单继承关系)

          [修饰符] interface  接口名   extends   接口1,接口2

③ 接口里的方法方法全是抽象的,默认修饰符是public abstract

④ 接口里的字段全是全局静态常量,默认修饰符是public static final

⑤ 接口里的内部类全是公共静态的,默认修饰符是public static

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

类和类之间存在是继承关系:                                 使用extends 来表示.

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

接口和实现类之间只能是实现关系(继承关系),使用implements来表示.

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

定义一个走路的接口:

interface IWalk{
	void walk();
};

定义一个猫类实现该接口:

class Cat implements IWalk{

	@Override
	public void walk() {
		System.out.println("猫咪,走猫步");
		
	}
	
}

测试类:

public class Test1 {
	public static void main(String[] args) {
		IWalk w = new Cat();//面向接口编程,存在多态
		w.walk();//体现多态特征:执行Cat类中的walk方法
	}
}

接口与抽象类的区别:

相同点

1):都位于继承的顶端,用于被其他实现或继承。

2):都不能实例化。

3):都可以定义抽象方法,其子类/实现类都必须覆写这些抽象方法。 

不同

1):接口没有构造方法,抽象类有构造方法

2):抽象类可包含普通方法和抽象方法,接口只能包含抽象方法(Java8之前);

3):一个类只能继承一个直接父类(可能是抽象类),接口是多继承的并且只支持一个类实现多个接口(接口弥补了Java的单继承)。

4):成员变量:接口里默认是public static final,抽象类是默认包权限。

5):方法:接口里默认是public abstract,抽象类默认是默认包访问权限。

6):内部类:接口里默认是public static,抽象类默认是默认包访问权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值