Java基础入门菜鸟学习第二十天——Java面向对象(十四)

Java面向对象——接口

5.7接口

5.7.1接口的前言
飞机、小鸟、超人
不同的事物之间,没有明确的继承关系。但是又包含了一些相同的功能,此时我们可以通过使用接口的方式来描述这些相同功能。
5.7.2什么是接口?
  • 物理接口:USB接口,网线接口,视频传输接口。统一标准方便维护以及管理以及使用。
  • Java中的接口:一套标准,标准说的是没有具体的实现方案或者是解决方案,但是规定了要实现这个套标准所需要的所有开发流程和实现步骤。接口描述的是一种have-a的关系,通过接口定义hava-a的关系时,超人是一个XXX,所以他拥有飞的能力。同时标准是一套特别抽象的集合。接口是一套比抽象类还抽象的内容。
  • 个人理解:初步理解接口是一个特殊的抽象类,当抽象类中全部是抽象的方法是,可以通过接口形式来实现

接口和类的区别:

  • 接口和类不一样的地方在于:类描述的是一种is-a的关系。接口描述的是一种have-a的关系
  • 通过接口定义hava-a的关系时,例如如果你具备什么能力(接口中定义的标准),那么你就必须要满足这个标准(接口)
5.7.3编写接口格式
  • interface关键词用于定义接口

代码演示:

//定义接口,用interface关键词定义
public interface Demo1 {
	//定义成员变量 只能是public static final修饰,切记要初始化
	public static final int NUMBER=12;
	
	//构造器在接口无法定义,也就无法创建对象
	//public Demo1() {}编译报错
	
	//接口中可以定义抽象的方法,切记没有方法体
	public abstract void method1();
	 
	/*jdk1.8之后允许接口中定义非抽象的方法*/
	//接口中定义的非静态非抽象方法目前之能用default, static
	default void method2() { 
		  System.out.println("我是非静态非抽象的普通方法"); 
	  }
	 
	//接口中可以定义静态的非抽象的方法
	public static void method3() {
		System.out.println("我是一个静态的非抽象的方法");
	}
}
  • 定义接口通过interface修饰,目前只能使用public和默认的去修饰接口(默认不是default,default不是关键词,是不写的意思)
  • 接口中定义的成员变量一定是公共的静态的常量,接口中的变量全部默认都是public static final int NUMBER=23;或者直接写int NUMBER=23;系统会自己加上public static final修饰符,切记一定要给成员变量初始化(赋值)
  • 接口中不能定义构造器,也就意味着接口无法实例化
  • 接口中定义的非静态方法都是抽象方法,默认通过public abstract void method1;来定义,切记抽象方法无方法体
  • 接口中可以定义静态方法,静态方法可以拥有方法体。
  • JDK1.8之后允许接口中定义有方法体的方法,但是要保证通过default来定义。
5.7.4接口和类的关系
  • implement关键词是用来实现接口

代码演示:

//接口一
interface Smoket{
	public static final String NAME="小明";
	public abstract void show();		
}
//接口二
interface Game extends Smoket{
	public abstract void computerGame();	
}
//类
public class Student extends Object implements Smoket,Game,Comparable{
	public void show() {
		System.out.println("在抽烟");
	}
	public void computerGame() {
		System.out.println("在玩游戏");
	}
	public int compareTo(Object obj) {
		return 1;
	}
}

在Java中只支持单继承,所以导致复用性不强,但是Java提供了另一种的解决方案,就是通过实现接口来使用,

类和接口中的关系:

  • 类和类之间是:继承关系
  • 类和接口之间是:实现关系
  • 接口和接口之间是:继承关系

接口的作用和注意事项:

  • 一个类通过implements实现一个接口,必须要保证当前类要重写接口中的所有抽象方法
  • 当一个类有继承和实现关系时,先继承,后实现。例如:public class Student extends Object implements Smoket,Game,Comparable
  • 类只能继承一个类,但是可以实现多个接口
  • 一个类实现多个接口时需要重写所有接口中的所有抽象方法
  • 一个接口不能实现其他接口,接口也不他继承其他类,但是接口可以继承接口,且接口只能继承接口。
  • 一个类实现了接口之后,要将接口中以及接口父接口中的所有抽象方法全部实现。
    空接口是有意义的,Serializable这个接口就是空接口,但是它也具备意义。
5.7.5接口的意义

接口在一定程度上弥补继承的缺陷,为了让多态发生的频率更高,可以通过实现关系来弥补继承关系的问题。

  • 接口的意义就是:
    • 为了填补继承的问题。
    • 接口也可以发生多态。接口变量指向实现类对象。
    • 接口是用来定义标准的,可以使代码编写起来更加规范。面向接口编程,使得编程越来越标准化
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QZP51ZX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值