auto commit

This commit is contained in:
CyC2018 2018-04-20 10:33:01 +08:00
parent d50669cf97
commit 98dd1ee329

View File

@ -508,7 +508,7 @@ protected 用于修饰成员,表示在继承体系中成员对于子类可见
如果子类的方法覆盖了父类的方法,那么子类中该方法的访问级别不允许低于父类的访问级别。这是为了确保可以使用父类实例的地方都可以使用子类实例,也就是确保满足里式替换原则。
字段决不能是公有的,因为这么做的话就失去了对这个字段修改行为的控制,客户端可以对其随意修改。可以使用共有的 getter 和 setter 方法来替换共有字段。
字段决不能是公有的,因为这么做的话就失去了对这个字段修改行为的控制,客户端可以对其随意修改。可以使用公有的 getter 和 setter 方法来替换公有字段。
```java
public class AccessExample {
@ -634,14 +634,14 @@ System.out.println(InterfaceExample.x);
- 从设计层面上看,抽象类提供了一种 IS-A 关系,那么就必须满足里式替换原则,即子类对象必须能够替换掉所有父类对象。而接口更像是一种 LIKE-A 关系,它只是提供一种方法实现契约,并不要求接口和实现接口的类具有 IS-A 关系。
- 从使用上来看,一个类可以实现多个接口,但是不能继承多个抽象类。
- 接口的字段只能是 static 和 final 类型的,而抽象类的字段可以有多种访问权限
- 接口的字段只能是 static 和 final 类型的,而抽象类的字段没有这种限制
- 接口的方法只能是 public 的,而抽象类的方法可以由多种访问权限。
**4. 使用选择**
使用抽象类:
- 需要在几个相关的类中共享代码
- 需要在几个相关的类中共享代码
- 需要能控制继承来的方法和域的访问权限,而不是都为 public。
- 需要继承非静态non-static和非常量non-final字段。
@ -771,7 +771,7 @@ String s5 = "bbb";
System.out.println(s4 == s5); // true
```
Java 虚拟机将堆划分成新生代、老年代和永久代PermGen Space。在 Java 7 之前,字符串常量池被放在永久代中,而在 Java 7它被放在堆的其它位置。这是因为永久代的空间有限,在大量使用字符串的场景下会导致 OutOfMemoryError 错误。
在 Java 7 之前,字符串常量池被放在运行时常量池中,它属于永久代。而在 Java 7字符串常量池被放在堆中。这是因为永久代的空间有限,在大量使用字符串的场景下会导致 OutOfMemoryError 错误。
> [What is String interning?](https://stackoverflow.com/questions/10578984/what-is-string-interning) </br> [深入解析 String#intern](https://tech.meituan.com/in_depth_understanding_string_intern.html)