设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

一些关于Java的句子

2014-12-23 15:40| 发布者: joejoe0332| 查看: 1421| 评论: 0|原作者: a598799539 |来自: Linux中国

摘要: Java中有四种不同的访问类型:这四种类型包括:private, package private (包访问权限,无修饰符,又叫default, 译者注)。如果你在类中定义一个元素时并不加任何访问类型修饰符,它将被默认设置为包访问权限(package ...

  本文并没有什么新鲜的。我只是收集了一些不太重要的语句,但这些语句可能对初级程序员来说很重要。也就是些无聊的旧东西。


  如果以下的这些你都知道的话,那么你比Java的了解已经超过了对一个平常的家庭主妇的了解。我不知道清楚所有的这些是否是有意义的。即使不知道其中的一些特性,你照样也可以成为一个相当不错的Java程序员。然而,本文中许多的新信息可能表明你还有很大的发展空间。


Java中有四种不同的访问类型(而不是三种)

  这四种类型包括:private, package private (包访问权限,无修饰符,又叫default, 译者注)。如果你在类中定义一个元素时并不加任何访问类型修饰符,它将被默认设置为包访问权限(package private),而不是public或者protected。


Java中有四种级别的访问类型


Java有四个级别的访问类型。


  从另一方面来说,如果在接口中,你不指定方法的访问修饰符,那么它将是public类型的。你也可以显式地指定它为public类型, 但这并不符合SONAR(一个开源代码质量管理平台,译者注)的代码质量管理思想。


访问类型是传递的


访问类型是传递的

我的“在Java中允许选择性的在接口的方法中写public”的观点是一个技术错误。

同样你也可在接口的字段前写final,甚至是static。这说明这些字段可以是非静态或非final吗?不是的,接口中的字段中总是final和static的。

Protected和package private是不一样的

Package private(或者default)访问类型可以使得相同包(package)下其他类能够访问这些字段或方法。保护类型(protected)的方法和字段可以被相同包下的类使用(这和package private是一样的),同时它也可以被其他类使用,只要那个类继承了这个包含这些protected方法或字段的类。


Protected是可传递的

如果有三个包a、b、c,每个包都分别包含A、B、C类,而且B继承A,C继承B,那么C可以访问A中的protected字段和方法。

  1. package a;
  2.  
  3. public class A {
  4. protected void a() {
  5.  
  6. }
  7. }
  8. package b;
  9.  
  10. import a.A;
  11.  
  12. public class B extends A {
  13. protected void b() {
  14. a();
  15. }
  16. }
  17. package c;
  18.  
  19. import b.B;
  20.  
  21. public class C extends B {
  22. protected void c() {
  23. a();
  24. }
  25. }

接口不能定义protected方法

很多人认为可以在接口中定义protected方法。如果你这么做的话,编译器很快就会毫不留情地给你报错。顺便说下,这也就是我为什么认为允许public关键字在接口中是一个技术错误,它会让人觉得还可以写其他访问类型似的。

Private is the new public

private是一种新的public

如果你还想在一个接口的方法中声明protected方法,你可能还不理解封装的含义。

此private非彼private

私有变量和方法在编译单元内是可见的。如果这听起来太神秘的话,换种说法:几乎就是在同一个Java文件中。这比“在它们被定义的类中”听起来好理解些。它们在同一编译单元的类和接口中也是可见的。嵌套类可以看到类中封装的私有字段和方法。然而,当前封闭类也可以看到该类下任何深度下类中的私有方法和字段。

  1. package a;
  2.  
  3. class Private {
  4. private class PrivateInPrivate {
  5. private Object object;
  6. }
  7.  
  8. Object m() {
  9. return new PrivateInPrivate().object;
  10. }
  11. }

后者并不广为人知,事实上也很少有用到。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号