本文没有新内容。 我只是收集了一些琐碎的语句,对于某些初级程序员来说,这可能并非琐碎。 无聊的旧东西。

如果您发生了所有这些事情,那么您对Java的了解将比普通的家庭妻子要多。 我不知道是否有必要了解所有这些内容。 如果您不了解其中某些功能,则可以成为一名相当不错的Java程序员。 但是,本文中的许多新信息可能表明您还有发展空间。

有4种不同的保护类型

在Java中(不是三个)。 这些是private ,打包的私有的, protectedpublic 。 如果在类中定义元素时未指定任何保护修饰符,则它将被包装为私有(而不是公共且不受保护)。

Java有四个保护级别。

另一方面,如果您未在接口的方法声明前指定保护修饰符它将是公共的。 您可以将其指定为显式public但是它对Java没有影响,SONAR不会像您那样做。

保护是传递性的

我对Java的看法是,这是技术错误,它允许您选择是否在接口的方法前面编写public

同样,您可以在接口中字段的前面甚至是static编写final 。 这可能暗示它们可能是非静态的或非最终的:不正确。 接口的字段是final和static。 总是。

受保护和私有包不一样

程序包私有(或默认)保护将使同一程序包的其他类可以访问方法或字段。 受保护的方法和字段可以在同一包中的类中使用(到目前为止与私有包相同),此外,还可以从扩展包含受保护的字段或方法的类的其他类中使用受保护的方法和字段。

受保护是可传递的

如果有三个包abc ,每个包含一个已命名的类ABC使得B延伸AC延伸B那么类C可以访问的受保护的字段和方法A

package a;public class A {protected void a() {}
}
package b;import a.A;public class B extends A {protected void b() {a();}
}
package c;import b.B;public class C extends B {protected void c() {a();}
}

接口无法定义受保护的方法

许多人认为您还可以在接口中定义protected方法。 在对程序进行编程时,编译器可以快速而残酷地使它变得显而易见:您不能。 顺便说一句:这就是为什么我认为在界面中允许使用public关键字是技术上的错误:它使人们认为它也可能是其他东西。

私人就是新的公众

如果要在接口中声明一个protected方法,则可能不了解封装。

私人不是那么私人

专用变量和方法在编译单元内部可见。 如果听起来太神秘了:在同一个Java文件中(几乎)。 这比“在定义它们的类中”要多。 从同一编译单元中的类和接口也可以看到它们。 内部类和嵌套类可以看到私有字段和包含它们的类的方法。 但是,封闭类也可以看到它们封闭到任何深度的类的私有方法和字段。

package a;class Private {private class PrivateInPrivate {private Object object;}Object m() {return new PrivateInPrivate().object;}
}

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

私有不是课程级别的对象

如果可以访问变量或方法,则无论它属于哪个对象,都可以访问它。 如果this.a是可访问的则another.a也接近假定another是同一个类的实例。 属于同一类实例的对象可以互相愚弄变量或方法。 虽然很少有这样的代码。 现实生活中的异常是equals() (由Eclipse第15和18行生成):

package a;public class PrivateIsClass {private Object object;@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;PrivateIsClass other = (PrivateIsClass) obj;if (object == null) {if (other.object != null)return false;} else if (!object.equals(other.object))return false;return true;}
}

静态类可能有很多实例

保护不是对象级别。 这是班级的。

不应具有任何实例的类通常称为实用程序类。 它们仅包含静态字段和静态方法,并且唯一的构造函数是私有的,不会从该类的任何静态方法中调用。 在Java 8中,您可以在接口中实现这种野兽,因为Java 8接口中可以包含静态方法。 我不认为我们应该使用该功能而不是实用程序类。 我并不完全相信我们应该完全使用实用程序类。

静态类始终位于另一个类(或接口)中。 它们是嵌套类。 它们是静态的,就像静态方法无法访问类的实例方法和字段一样,静态嵌套类也无法访问嵌入类的实例方法和字段。 这是因为嵌套类没有对嵌入类实例的引用(如果需要,可以使用指针)。 与嵌套类相反,内部类是非静态的,没有嵌入类的实例就无法创建。 内部类的每个实例都有对嵌入类的一个实例的引用,因此内部类可以访问嵌入类的实例方法和字段。

因此,如果没有周围类的实例,就无法创建内部类。 如果这是当前对象(也称为this ,则无需指定它。 在这种情况下,您可以编写new ,在这种情况下,它只是this.new的简写形式。 在静态环境中,例如从静态方法中,您必须指定内部类应使用哪个封闭类实例创建内部类。 参见第10行:

package a;class Nesting {static class Nested {}class Inner {}void method(){Inner inner = new Inner();}static void staticMethod(){Inner inner = new Nesting().new Inner();}
}

匿名类只能访问最终变量

变量必须有效才能最终

当在方法内部定义匿名类时,它可以访问局部变量(如果它们是最终的)。 但这是含糊的。 他们必须被宣布为final并且他们也必须是有效的决赛。 这是Java 8中发布的内容。您无需将此类变量声明为final但它们仍必须是有效的final。

Java 8不需要最终的,只有有效的最终的

无论如何,为什么必须要声明final的东西呢? 像方法参数一样。 他们也必须是决赛。 您说这不是Java的要求吗? 好吧,你是对的。 这是良好风格编程的要求。

翻译自: https://www.javacodegeeks.com/2014/11/some-sentences-about-java.html

关于Java的一些句子相关推荐

  1. java分割句子_关于Java的一些句子

    java分割句子 本文没有新内容. 我只是收集了一些琐碎的语句,对于某些初级程序员来说,这可能并非琐碎. 无聊的旧东西. 如果您发生了所有这些事情,那么您对Java的了解将比普通的家庭妻子要多. 我不 ...

  2. java 对英文句子进行 分词、去除停用词、提取词干

    下面 词干提取算法 用到的jar包 lucene-analyzers-smartcn-7.6.0.jar (包含 中英 词干提取) 百度网盘链接:https://pan.baidu.com/s/15D ...

  3. java将英文句子分解为单词,Java如何将文本或句子分解为单词?

    起初,它看起来很简单.我们可以使用来分割文本String.split(),使用空格来分割单词.但是,如果单词以问号(?)或感叹号(!)结尾,该怎么办?我们可能还需要注意其他一些规则. 使用java.t ...

  4. 【华为OD机试真题 Java】英文句子倒序

    前言:本专栏将持续更新华为OD机试题目,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你.关于OD机试流程.面经.面试指导等,如有任何疑问,欢迎联系我,wechat:steven ...

  5. 形容java工作者的句子_形容工作努力的句子(共20句)

    1.任何的工作本身都是没有未来的,工作的未来掌握在工作者自己的手中. 2.一个人被工作弄得神魂颠倒直至生命的最后一息,这的确是幸运. 3.当你把工作当成一种乐趣时,生活就是一种享受:当你只是把工作当成 ...

  6. java 正则切分句子_Java开发笔记(三十七)利用正则串分割字符串

    前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串.分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号.空格等等都可 ...

  7. java统计每个单词单词出现的次数_Java统计英文句子中出现次数最多的单词并计算出现次数的方法...

    本文实例讲述了Java统计英文句子中出现次数最多的单词并计算出现次数的方法.分享给大家供大家参考,具体如下: import java.util.*; /** * 统计出现次数最多的单词和它出现的次数 ...

  8. java 单词出现次数_Java统计英文句子中出现次数最多的单词并计算出现次数的方法...

    搜索热词 本文实例讲述了Java统计英文句子中出现次数最多的单词并计算出现次数的方法.分享给大家供大家参考,具体如下: import java.util.*; /** * 统计出现次数最多的单词和它出 ...

  9. java句子倒序_Java实现英文句子中的单词顺序逆序输出的方法

    摘要:这篇Java开发技术栏目下的"Java实现英文句子中的单词顺序逆序输出的方法",介绍的技术点是"逆序输出.单词顺序.英文句子.Java.实现.方法",希望 ...

最新文章

  1. js如何生成[n,m]的随机数
  2. iOS架构-Xcode创建Workspace管理多个子工程(23)
  3. shell中变量的替换
  4. 2014年考研计算机大纲解析:数据结构,2014年考研计算机大纲解析之数据结构
  5. Codeforces Round #321 (Div. 2) B. Kefa and Company (尺取)
  6. 第十一章:配置和安全---IntelliMorph
  7. Linux下用户组、文件权限、更改目录下所有文件权限
  8. 什么格式的照片可以是透明的
  9. fw325r没有虚拟服务器,迅捷fw325r路由器设置完没有网怎么办?
  10. Non-static method 'save(java.long.Object)' cannot be referenced from a static context.
  11. 关于WireShark跟随数据流后entire conversation显示的字节数分析
  12. 惊讶!一行Python代码让图形秒变「手绘风」
  13. WQ7033开发指南(按键篇)之4.4 三轴加速度传感器SC7A20实现双击、三击驱动详解
  14. 超详细的阿里云服务器购买及远程连接开机(Win系统)
  15. oj趣味题:柱状图排序
  16. java-天气预报的接口
  17. 什么是3C认证?流程是什么?需要准备什么资料?周期多久?
  18. 一纸学习思维导图 Mind Map
  19. 新手如何在阿里云服务器上搭建自己的个人网站
  20. 计算机基础之二进制与原反补

热门文章

  1. 2015蓝桥杯省赛---java---B---10(生命之树)
  2. 交换数组中的两个元素
  3. 进程与服务的签名_苹果app签名需要注意哪几点
  4. ReviewForJob——桶式排序+基数排序(==多次桶式排序)
  5. Oracle函数初探
  6. gradle跟pom_Gradle多项目构建–父pom式结构
  7. java8默认内存收集器_使用正确的垃圾收集器将Java内存使用量降至最低
  8. 美图手机投射功能在哪_在Java 8中进行投射(还有其他功能?)
  9. jface_使用JFace Viewer延迟获取模型元素
  10. maven将第三方依赖_如何将商业第三方文物整合到您的Maven版本中