添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
失落的啄木鸟  ·  华为VR ...·  1 月前    · 
飘逸的水龙头  ·  UVM与BFM的高效复用·  1 月前    · 
不拘小节的羽毛球  ·  could not find ...·  9 月前    · 
聪明的海龟  ·  nested exception is ...·  1 年前    · 
爱看球的伤疤  ·  javax.net.ssl.SSLHands ...·  1 年前    · 
痴情的红薯  ·  Win10/Win7 ...·  1 年前    · 
爱笑的花生  ·  Screen rotation in ...·  2 年前    · 

很好理解,类和接口如果定义成private,那么其他任何类都不能访问,这样的类写出来也没有意义。

protected:

这个问题用反证法比较好解释清楚,假设类B和A不在同一个包,A又是protected类, 那么B能访问A的前提是B是A的子类,而B能成为A的子类(或者说B能继承A)的前提又是B能访问A。这两个条件互为前提,无法实现。

第二个问题:

private:

接口是需要其他类实现的, 如果方法定义成private,那么其他任何类都不能访问。这样的方法即要求被实现,又对任何类不可见,这是无法实现的。

protected:

(1)假设public接口I有一个protected方法M,那么位于其他包的public类C就可以实现这个接口(方法M依然是protected)。那么C的同包类D调用方法M只能这样访问:

1

2

C c = new C();

c.M();

无法这样访问:

1

2

I c = new C();

c.M();

这样就失去了使用接口的重要意义:提供统一的接口,面向接口编程思想也无法体现。

(2)假设接口I是default的, 那么方法M是protected理论上是没有问题的,而且M也可以是default、public。至于为什么不让用protected,可能是出于简化修饰词的复杂度的目的(如果使用,需要区分接口是public的时候不能用,default接口则能用),至于default请参考(3).

default:

(3)假设public接口I有一个default方法M, 那么位于其他包的无法正常实现接口I,因为方法M对其不可见。

(4)假设default接口I有一个default方法M,那么方法M是default理论上是没有问题的,而且M也可以是proteced、public。可能出于和(2)所说不能用protected的相同原因,不能使用default。

因此,综合以上四点,接口方法只能使用public,既然只能用public,java编译器在你忘了在M前写public的时候干脆自动帮你转成public了。

原文链接:
https://blog.csdn.net/guotongxuexue/article/details/77929259 那么我们能够发现 protected 是可以让不同包的子 去进行调用的,那么我们想想一个 可能是一个 接口 的子 吗?显然不可能, 只能实现 接口 ,但那不叫继承 接口 。虽然 接口 也是有子 接口 的,但那又如何呢, 还是无法继承 接口 啊。而如果 default private 就能够让 实现 接口 里的 方法 ,那么 protected 的存在 private (私有的)无法访问: 使用 private 关键字,就意味着被声明的成员或 方法 ,除了本 ,其他任何 都无法访问。 public(公共的) 接口 访问权限: 使用 public关键字,就意味着被声明的成员或 方法 对所有 都是可以访问的。 protected (受保护的)继承访问权限: 使用 protected 关键字,就意味着被声明的成员或 方法 ,在子 以及相同包内的其他 都可以访 在Spring AOP中,动态代理会拦截被代理对象的 方法 调用,并在 方法 调用前后添加一些额外的逻辑(如事务管理、日志记录等)。该 方法 的主要作用是将原始的返回值转换为代理对象期望的返回值 型,以确保在返回时返回的是代理对象,而不是原始对象。所以最开始实例化的springbean将被后面的aop cglib代理 替换掉,导致调用 private 方法 时,也是 使用 的cglib代理 。在Spring AOP中,如果一个 方法 的返回值 型是一个被代理的 型(即在AOP切面中被代理的 ),Spring会 使用 。 以下 修饰 符从低到高依次排序 public :本 可以访问、同包可以访问、子 也可访问、其他位置可以访问 protect :本 可以访问、同包可以访问、子 可以访问、其他位置 不能 访问 默认 :本 可以访问、同包可以访问、子 不可以访问、其他位置 不能 访问 private : 非本 不能 访问 假设在非同包的情况,有一个用 protected 修饰 修饰 T,此时还有一个在其他包的子 T2继承,现在,子 T2的main 方法 中创建 在传统的Java编程中,被广为人知的一个知识点是:java Interface 接口 不能 定义 private 私有 方法 。只允许我们定义public访问权限的 方法 、抽象 方法 或静态 方法 。但是从Java 9 开始,Interface 接口 中允许定义私有 方法 和私有静态 方法 。下面我们就来为大家介绍其语法规则,和为什么要有这样的设计。其实在Java 8之前,还有另一个被广为人知的知识点: 接口 中所有的 方法 ... 对于java程序员来说,java的访问权限 修饰 词public、 protected default private 的区别和 使用 肯定都不是问题,这里也不再啰嗦了,反正度娘一搜就一大把。最近在整理java core的培训资料时,想到了几个关于权限 修饰 词的问题:为什么 接口 (不考虑内部 接口 ) 不能 使用 private protected 修饰 词,只能是public和 default ?为什么 接口 方法 不能 是p... 1.java 修饰 符访问权限--public, protected , private , default (package,friendly)被public 修饰 属变量及 方法 ,可以被包内及包外的任何 访问;被 protected 修饰 属变量及 方法 ,包内的任何 ,及包外的那些继承了此 的子 才能访问;被 private 修饰 属变量及 方法 ,包内包外的任何 不能 访问;如果一个 属变量及 方法 不以...