Skip to content

Commit a4f500c

Browse files
committed
Update Java基础知识.md
1 parent 07b18f8 commit a4f500c

File tree

1 file changed

+0
-24
lines changed

1 file changed

+0
-24
lines changed

docs/java/basis/Java基础知识.md

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,6 @@
5353
- [2.3. 修饰符](#23-修饰符)
5454
- [2.3.1. 在一个静态方法内调用一个非静态成员为什么是非法的?](#231-在一个静态方法内调用一个非静态成员为什么是非法的)
5555
- [2.3.2. 静态方法和实例方法有何不同](#232-静态方法和实例方法有何不同)
56-
- [2.4. 接口和抽象类](#24-接口和抽象类)
57-
- [2.4.1. 接口和抽象类的区别是什么?](#241-接口和抽象类的区别是什么)
5856
- [2.5. 其它重要知识点](#25-其它重要知识点)
5957
- [2.5.1. String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?](#251-string-stringbuffer-和-stringbuilder-的区别是什么-string-为什么是不可变的)
6058
- [2.5.2. Object 类的常见方法总结](#252-object-类的常见方法总结)
@@ -798,7 +796,6 @@ Java 程序设计语言对对象采用的不是引用调用,实际上,对象
798796
| 发生阶段 | 编译期 | 运行期 |
799797
800798
801-
802799
**方法的重写要遵循“两同两小一大”**(以下内容摘录自《疯狂 Java 讲义》,[issue#892](https://github.com/Snailclimb/JavaGuide/issues/892) ):
803800
804801
- “两同”即方法名相同、形参列表相同;
@@ -986,27 +983,6 @@ public class Student {
986983
987984
2. 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
988985
989-
### 2.4. 接口和抽象类
990-
991-
#### 2.4.1. 接口和抽象类的区别是什么?
992-
993-
1. 接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法。
994-
2. 接口中除了 staticfinal 变量,不能有其他变量,而抽象类中则不一定。
995-
3. 一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过 extends 关键字扩展多个接口。
996-
4. 接口方法默认修饰符是 public,抽象方法可以有 publicprotecteddefault 这些修饰符(抽象方法就是为了被重写所以不能使用 private 关键字修饰!)。
997-
5. 从设计层面来说,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范。
998-
999-
> 备注:
1000-
>
1001-
> 1.JDK8 中,接口也可以定义静态方法,可以直接用接口名调用。实现类和实现是不可以调用的。如果同时实现两个接口,接口中定义了一样的默认方法,则必须重写,不然会报错。(详见 issue:[https://github.com/Snailclimb/JavaGuide/issues/146](https://github.com/Snailclimb/JavaGuide/issues/146)。
1002-
> 2. jdk9 的接口被允许定义私有方法 。
1003-
1004-
总结一下 jdk7~jdk9 Java 中接口概念的变化([相关阅读](https://www.geeksforgeeks.org/private-methods-java-9-interfaces/)):
1005-
1006-
1. 在 jdk 7 或更早版本中,接口里面只能有常量变量和抽象方法。这些接口方法必须由选择实现接口的类实现。
1007-
2. jdk8 的时候接口可以有默认方法和静态方法功能。
1008-
3. Jdk 9 在接口中引入了私有方法和私有静态方法。
1009-
1010986
### 2.5. 其它重要知识点
1011987
1012988
#### 2.5.1. String StringBufferStringBuilder 的区别是什么? String 为什么是不可变的?

0 commit comments

Comments
 (0)