详述Java接口

Java接口详解
本文深入解析Java接口的概念,包括接口的定义、与抽象类的区别、多继承特性,以及接口中的抽象方法、常量和内部类等内容。同时,介绍了接口在Java中的实现方式,以及在JDK8之后新增的静态方法和默认方法特性。

1.先由抽象类引出接口的概念

  •        一个抽象类中都是抽象方法,则可以将该抽象类定义成接口
  •        接口中的抽象方法必须通过一个类来实现    implements  接口  实现类:一个实现了接口中抽象方法的类,因为Whale类实现了接口中抽象方法,所以Whale类即是实现类
  • 接口中需要注意以下几点

    详细代码见抽象类里

  • //1、如果一个类没有实现接口中的所有抽象方法,则该类必须为抽象类
    //2、接口中没有默认构造方法,而且也不能定义构造方法
    //3、接口一般以I开头
    //4、接口中的变量为public static fianl常量
    //5、接口中的抽象方法默认public abstract

2.什么是接口

Java接口是抽象方法的集合,其定义语法为:

访问权限控制符 interface 接口名 [extends  接口列表] {

常量;

抽象方法;

内部类; }

package com.edu.zzu.test;

public interface IFather{
	int age=40;
	void eat();
	
}

接口内只能包含常量(public static final)、抽象方法及内部类。 接口中的抽象方法必须为public访问权限控制符,不能为其它控制符。

3.接口与继承

  • Java类只有单继承,但是Java中接口可以有多继承,类通过implements关键字时间接口继承
  • 在JDK8及其以后版本的JDK中,接口内可以定义静态方法(static修饰的方法)与默认方法(default关键字修饰的方法),在这里需要注意的是,接口中不能有普通方法。接口中的静态方法实现类无法继承,默认方法实现类可以继承。

  • 一个类可以实现一个或多个接口,如果一个类实现了一个接口,但没有实现接口中的所有抽象方法,那么这个类必须是abstract类。在这里需要注意的一点有,接口不能继承接口。
  • 如果多个接口中定义了相同的抽象方法,则在实现类中只实现其中一个即可;
public interface ICircle {

	double getArea();
}

public interface IRectangle {

	double getArea();
}

public class GraphicalUtil implements ICircle, IRectangle {

	@Override
	public double getArea() {
		return 0;
	}
}
  • 如果一个类中实现了多个接口,且接口中重复常量名,在实现类中必须指定到底使用哪一个。

  • 只有public和默认的两种访问修饰符能修饰类和接口,在接口和类中,默认的直接不写

4.接口中需要注意的其他问题

  • 通过extends关键字可以使自定义的接口实现继承,但需要注意以下两点: 接口只能继承父接口,不能继承抽象类和普通类。 接口弥补了Java单一继承的缺点(Java中的类只能继承一个父类),即接口可以继承多个父接口,它们之间用英文逗号隔开。
  • 接口回调描述的是一种现象:接口声明的变量指向其实现类实例化的对象,那么该接口变量就可以调用接口中的抽象方法。

上述实例就说明了接口没有构造方法,不能创建自己的对象,但是可以引用实现类的对象。

  • 抽象类与接口区别

5.函数式接口

  • 接口中有一个抽象方法,则该接口可以由@Functionalinterface修饰,称为函数式接口
  • 函数式接口主要用于Lambda,用于简化匿名内部类
  • 从JDK8开始,在函数式接口中可以包含一个或多个由default,static修饰的非抽象方法
package com.jd.service;
@FunctionalInterface
public interface IMammal {
	void move();
	public default void speak() {
		System.out.println("speaking......");
	}
	public static void speak1() {
		System.out.println("speaking......");
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值