提交 d5ecd549 编写于 作者: S shuang.kou

Update Java基础知识.md

上级 a709acec
...@@ -13,9 +13,7 @@ ...@@ -13,9 +13,7 @@
- [7. Java 应用程序与小程序之间有哪些差别?](#7-java-应用程序与小程序之间有哪些差别) - [7. Java 应用程序与小程序之间有哪些差别?](#7-java-应用程序与小程序之间有哪些差别)
- [8. 字符型常量和字符串常量的区别?](#8-字符型常量和字符串常量的区别) - [8. 字符型常量和字符串常量的区别?](#8-字符型常量和字符串常量的区别)
- [9. 构造器 Constructor 是否可被 override?](#9-构造器-constructor-是否可被-override) - [9. 构造器 Constructor 是否可被 override?](#9-构造器-constructor-是否可被-override)
- [10. 重载和重写的区别](#10-重载和重写的区别) - [10. 重载和重写的区别](#10-重载和重写的区别) - [重载](#重载) - [重写](#重写)
- [重载](#重载)
- [重写](#重写)
- [11. Java 面向对象编程三大特性: 封装 继承 多态](#11-java-面向对象编程三大特性-封装-继承-多态) - [11. Java 面向对象编程三大特性: 封装 继承 多态](#11-java-面向对象编程三大特性-封装-继承-多态)
- [封装](#封装) - [封装](#封装)
- [继承](#继承) - [继承](#继承)
...@@ -167,6 +165,10 @@ Constructor 不能被 override(重写),但是可以 overload(重载),所 ...@@ -167,6 +165,10 @@ Constructor 不能被 override(重写),但是可以 overload(重载),所
## 10. 重载和重写的区别 ## 10. 重载和重写的区别
> 重载就是同样的一个方法能够根据输入数据的不同,做出不同的处理
>
> 重写就是当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法
#### 重载 #### 重载
发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同。 发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同。
...@@ -175,9 +177,28 @@ Constructor 不能被 override(重写),但是可以 overload(重载),所 ...@@ -175,9 +177,28 @@ Constructor 不能被 override(重写),但是可以 overload(重载),所
![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/bg/desktopjava核心技术-重载.jpg) ![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/bg/desktopjava核心技术-重载.jpg)
**综上:重载就是同一个类中多个同名方法根据不同的传参来执行不同的逻辑处理。**
#### 重写 #### 重写
重写是子类对父类的允许访问的方法的实现过程进行重新编写,发生在子类中,方法名、参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类。另外,如果父类方法访问修饰符为 private 则子类就不能重写该方法。**也就是说方法提供的行为改变,而方法的外貌并没有改变。** 重写发生在运行期,是子类对父类的允许访问的方法的实现过程进行重新编写。
1. 返回值类型、方法名、参数列表必须相同,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类。
2. 如果父类方法访问修饰符为 private/final/static 则子类就不能重写该方法,但是被 static 修饰的方法能够被再次声明。
3. 构造方法无法被重写
**综上:重写就是子类对父类方法的重新改造,外部样子不能改变,内部逻辑可以改变**
**暖心的 Guide 哥最后再来个图标总结一下!**
| 区别点 | 重载方法 | 重写方法 |
| :--------- | :------- | :--------------------------------------------- |
| 发生范围 | 子类 | 同一个类中 |
| 参数列表 | 必须修改 | 一定不能修改 |
| 返回类型 | 可修改 | 一定不能修改 |
| 异常 | 可修改 | 可以减少或删除,一定不能抛出新的或者更广的异常 |
| 访问修饰符 | 可修改 | 一定不能做更严格的限制(可以降低限制) |
| 发生阶段 | 运行期 | 编译器 |
## 11. Java 面向对象编程三大特性: 封装 继承 多态 ## 11. Java 面向对象编程三大特性: 封装 继承 多态
...@@ -251,7 +272,7 @@ String 中的对象是不可变的,也就可以理解为常量,线程安全 ...@@ -251,7 +272,7 @@ String 中的对象是不可变的,也就可以理解为常量,线程安全
- **装箱**:将基本类型用它们对应的引用类型包装起来; - **装箱**:将基本类型用它们对应的引用类型包装起来;
- **拆箱**:将包装类型转换为基本数据类型; - **拆箱**:将包装类型转换为基本数据类型;
更多内容见:[深入剖析Java中的装箱和拆箱](https://www.cnblogs.com/dolphin0520/p/3780005.html) 更多内容见:[深入剖析 Java 中的装箱和拆箱](https://www.cnblogs.com/dolphin0520/p/3780005.html)
## 14. 在一个静态方法内调用一个非静态成员为什么是非法的? ## 14. 在一个静态方法内调用一个非静态成员为什么是非法的?
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册