java interface 的几点默认规则

本文详细解析了Java接口中的方法和成员变量的默认访问权限为public,成员变量默认为public static final类型,并介绍了如何通过接口名或实现类名调用。此外,文章还探讨了Java 1.8新增的default方法特性及其使用注意事项。
摘要由CSDN通过智能技术生成

  1. interface中定义的方法和成员变量,默认为public访问权限,且仅能为public
  2. interface中的成员变量默认为public static final类型,可通过接口名或者实现类名或在实现类中直接调用。
  3. interface 中的方法,关于这个可能有点不好理解,例如我们interface在1.8以前是没有实现的,要用里面的方法要自己去实现,此时在实现勒种是public 而不是带有static的,所以默认方法应该是非static和final的,而且1.8中还增加了default可以实现接口,可以不用再实现类中override。

接口中方法使用的注意事项

  • 非default、static方法不能在interface中有实现,否则编译错误:Abstract methods do not specify a body

  • default、static方法必须在interface中有具体的实现,否则编译错误:This method requires a body instead of a semicolon

  • 可以拥有多个default方法

  • 可以拥有多个static方法

  • 使用接口中类型时,仅仅需要实现抽象方法,default、static方法不需要强制自己新实现


附上java访问权限修饰词的作用范围: 
访问权限   自身类    同包   子类     其他包

public           ∨             ∨          ∨           ∨

protect         ∨              ∨          ∨           ×

default          ∨              ∨          ×            ×

private         ∨                ×          ×            × 


这里贴一段同名方法再不同接口中的情况:

package com.*****r;
public interface AAAA {
       int pb(String a);
default void test()
{
}

}

package com.****
public interface BBBB {
void pb();
static void test()
{

}

}

package com.*****;
public class CCC implements AAAA, BBBB {

@Override
public void pb()
{
// TODO Auto-generated method stub


@Override
public int pb( String a )
{
// TODO Auto-generated method stub
return 0;
}
}

判断是否是同一个方法,是通过名称和参数来的,和返回值无关,如果两个interface中都一致,不报错,属于同一个实现,如果返回值不同,编译报错,如果参数或者名称不同,那么就是两个方法,对于default 和static的是可以再interface中存在,不影响编译。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值