auto commit
This commit is contained in:
parent
d50669cf97
commit
98dd1ee329
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user