接口中同一个方法不写public,为什么在实现类中一定要写public呢?

首先,接口中所有方法默认都是public,至于为什么要是public,原因在于如果不是public,那么只能在同个包下被实现,可访问权限就降低很多了,那么在实现类中,实现的类相当于子类,子类的访问权限是不能比父类小的,而在java中一个类如果没有权限的修饰符,默认是friendly(同一个包内的其它类才可访问),所以在实现类中一定要写public

补充:

访问权限   类   包   子类   其他包 描述

    public     ∨    ∨    ∨      其它楼房的人也能用我, 外星人不能用我

    protect     ∨    ∨    ∨     × 只有我自己和与我住在同一个楼房里的人以及我的子孙能用我

    default     ∨    ∨    ×     × 只有我自己和与我住在同一个楼房里的人能用我

    private     ∨    ×    ×   × 只有我自己可以用我

Java中所谓的“friendly”和“default”都只是一种说法,并不是说真有那么一个指定默认访问权限的关键字(default倒的确是个语言关键字,但那是用在switch语句中的,跟楼主的问题无关)。

Java中类的成员权限修饰符只有三个:public/private/protected。
当一个类的成员前面没有任何访问权限修饰符修饰时,我们就说他是“fiendly权限”,或者“default权限”(注意,只是这样“说”,并不是主你可以那样写上去)。这种说法指的就是那种可以从package内部或子类中访问的成员。

C++中也没有“friendly”,只有一个“friend”,但那是另一个意思。它虽然跟访问权限有点关系,但并不是一个访问权限修饰符,C++的权限修饰符也是只有那3种。而且C++默认的是private,这点也跟Java不一样。

C#倒是给另外一种“默认的”权限修饰符赋于了一个真正的语言关键字:internal。即写上internal跟不写是一个意思。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值