Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
醒狮指南
JavaGuide
提交
a4f500c1
J
JavaGuide
项目概览
醒狮指南
/
JavaGuide
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JavaGuide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a4f500c1
编写于
11月 27, 2020
作者:
G
guide
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update Java基础知识.md
上级
07b18f80
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
0 addition
and
24 deletion
+0
-24
docs/java/basis/Java基础知识.md
docs/java/basis/Java基础知识.md
+0
-24
未找到文件。
docs/java/basis/Java基础知识.md
浏览文件 @
a4f500c1
...
...
@@ -53,8 +53,6 @@
-
[
2.3. 修饰符
](
#23-修饰符
)
-
[
2.3.1. 在一个静态方法内调用一个非静态成员为什么是非法的?
](
#231-在一个静态方法内调用一个非静态成员为什么是非法的
)
-
[
2.3.2. 静态方法和实例方法有何不同
](
#232-静态方法和实例方法有何不同
)
-
[
2.4. 接口和抽象类
](
#24-接口和抽象类
)
-
[
2.4.1. 接口和抽象类的区别是什么?
](
#241-接口和抽象类的区别是什么
)
-
[
2.5. 其它重要知识点
](
#25-其它重要知识点
)
-
[
2.5.1. String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?
](
#251-string-stringbuffer-和-stringbuilder-的区别是什么-string-为什么是不可变的
)
-
[
2.5.2. Object 类的常见方法总结
](
#252-object-类的常见方法总结
)
...
...
@@ -798,7 +796,6 @@ Java 程序设计语言对对象采用的不是引用调用,实际上,对象
| 发生阶段 | 编译期 | 运行期 |
**方法的重写要遵循“两同两小一大”**
(以下内容摘录自《疯狂 Java 讲义》,
[
issue#892
](
https://github.com/Snailclimb/JavaGuide/issues/892
)
):
-
“两同”即方法名相同、形参列表相同;
...
...
@@ -986,27 +983,6 @@ public class Student {
2.
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
### 2.4. 接口和抽象类
#### 2.4.1. 接口和抽象类的区别是什么?
1.
接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法。
2.
接口中除了 static、final 变量,不能有其他变量,而抽象类中则不一定。
3.
一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过 extends 关键字扩展多个接口。
4.
接口方法默认修饰符是 public,抽象方法可以有 public、protected 和 default 这些修饰符(抽象方法就是为了被重写所以不能使用 private 关键字修饰!)。
5.
从设计层面来说,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范。
> 备注:
>
> 1. 在 JDK8 中,接口也可以定义静态方法,可以直接用接口名调用。实现类和实现是不可以调用的。如果同时实现两个接口,接口中定义了一样的默认方法,则必须重写,不然会报错。(详见 issue:[https://github.com/Snailclimb/JavaGuide/issues/146](https://github.com/Snailclimb/JavaGuide/issues/146)。
> 2. jdk9 的接口被允许定义私有方法 。
总结一下 jdk7~jdk9 Java 中接口概念的变化(
[
相关阅读
](
https://www.geeksforgeeks.org/private-methods-java-9-interfaces/
)
):
1.
在 jdk 7 或更早版本中,接口里面只能有常量变量和抽象方法。这些接口方法必须由选择实现接口的类实现。
2.
jdk8 的时候接口可以有默认方法和静态方法功能。
3.
Jdk 9 在接口中引入了私有方法和私有静态方法。
### 2.5. 其它重要知识点
#### 2.5.1. String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录