java接口的抽象方法和静态方法

在JDK1.8以前,Java接口不提供具体实现。但从JDK1.8开始,接口允许定义默认方法和静态方法。博客通过定义IHello接口及其实现类,展示了方法调用和执行结果,体现了这一接口新特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在JDK1.8以前,接口(interface)没有提供任何具体的实现,在《JAVA编程思想》中是这样描述的:“interface这个关键字产生了一个完全抽象的类,它根本就没有提供任何具体的实现。它允许创建者确定方法名、参数列表和返回类型,但是没有任何方法体。接口只提供了形式,而未提供任何具体实现”。

但是这一限制在JDK1.8中被打破了,JDK1.8开始,接口允许定义默认方法和静态方法。

代码示例

定义一个IHello 接口

public interface IHello {
	//抽象方法
	void sayHi();
	//静态方法
	static void sayHello() {
		System.out.println("static method : say Hello!");
	}
	//默认方法
	default void sayByebye() {
		System.out.println("default method : say bye!");
	}

}

定义一个IHello接口的实现类

public class HelloImpl implements IHello {
	//实现抽象方法
	@Override
	public void sayHi() {
		
		System.out.println("normal method:say hi");
		
	}
}

方法的调用

public class App 
{
	public static void main(String[] args)
    {
    	HelloImpl helloImpl = new HelloImpl();
    	//对于abstract抽象方法通过实例对象来调用
    	helloImpl.sayHi();
    	//default 方法只能通过实例对象来调用
    	helloImpl.sayByebye();
    	//静态方法通过 接口名.方法名()来调用
    	IHello.sayHello();
    	
    	//接口是不允许new的,如果使用new后面必须跟上一对花括号用于实现抽象方法,这种方式被称为匿名实现类,匿名实现类是一种没有名称的实现类
    	//匿名实现类的好处:不用再单独声明一个类 缺点:由于没有名称。不能重复使用,只能使用一次
    	new IHello() {			
			@Override
			public void sayHi() {
				System.out.println("normal method;say hi 新定义");			
			}
		}.sayHi();
    }
}

执行结果
normal method:say hi
default method :say bye!
static method : say Hello!
normal method:say hi 新定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值