Interface中定义方法

本文介绍从 JDK 1.8 开始,Java 接口新增的默认方法和静态方法特性。默认方法允许接口直接提供方法实现,而不需要实现类重写;静态方法则可以在不实例化接口的情况下直接调用。

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

一般我们都会认为Interface只能写入抽象的方法,它的实现交给使用的该接口的类,但在JDK1.8 之后Interface可以定义方法了。。

Interface:

package Test;

public interface testInterface {
     
	//可以被使用该接口的类使用
	default void change1(){ 
		System.out.println("we can use the word default to achieve the method!! ");
	}
	
	//可以被接口自己使用,与使用类中的静态方法一样
	static void change2(){
    	   System.out.println("we can use the word static to achieve the method!!!");
       }
}

test

package Test;

public class testMethod implements testInterface{
    
	public static void main(String args[]){
        	  
        	 testMethod test = new testMethod();
        	 
        	 test.change1();
        	 testInterface.change2();//调用自身的静态方法
          }
}


结论:

    1.新的Interface可以调用自身的static方法(这一点类似于类),但无法调用其default(当然包括public)方法,这与Interface的最初定义是一致,因为Interface本身就是等待其他类          来实现的,无法调用自身还没有实现的接口。。
    2.Interface中声明为default的并且已经实现的方法可以被类调用,无须再实现。。
    3.Interface定义的方法只能通过static或者是default修饰符实现,不可以使用public。


### 如何在SystemVerilog接口中定义方法 在SystemVerilog中,接口不仅用于信号声明和连接模块间的通信路径,还可以包含函数和任务。这些函数或任务可以是没有实现的原型(类似于C++中的纯虚函数),也可以是有具体实现的方法。 #### 定义无实现的方法 当希望强制任何使用该接口的类都必须提供特定行为的具体版本时,可以在接口内声明不带主体的任务或函数: ```systemverilog interface my_if; // 声明一个没有实现的任务 task do_something(); // 这里不留有具体的实现细节 endtask // 或者声明一个返回整数类型的函数同样也没有实现 function int calculate(int a, int b); // 不含实际逻辑 endfunction endinterface : my_if ``` 上述方式创建了一个名为`my_if`的接口,在此接口中有两个成员:一个是叫做`do_something()`的任务;另一个是接受两个参数并返回整数值的`calculate()`函数[^3]。 #### 提供默认实现 有时可能想要给某些操作提供默认的行为模式,这可以通过直接在接口内部编完整的函数体来完成: ```systemverilog interface my_if_with_default_impl; // 实现带有默认行为的任务 task automatic display_message(string msg="Default Message"); $display("%s", msg); endtask // 同样也能为函数指定默认算法 function automatic int add_two_numbers(int x=0, y=0); return x + y; endfunction endinterface : my_if_with_default_impl ``` 这里展示了如何通过`automatic`关键字使任务和函数成为自动化的,这意味着它们将在调用时立即执行而不需要额外的过程控制语句。此外还提供了可选参数作为输入,默认情况下会采用预设值[^4]。 对于更复杂的场景,比如需要处理多个相同类型的接口实例,则建议采取更为高级的技术方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值