2626### 3. 成员变量和局部变量的区别
2727
2828| 区别 | 成员变量 | 局部变量 |
29- | :--: | :--: | :--: |
29+ | :--: | :--: | :--: |
3030| 在类中位置不同 | 类中方法外 | 方法内或者方法声明上 |
31- | 在内存中位置不同 | 堆内存 | 栈内存 |
31+ | 在内存中位置不同 | 堆内存 | 栈内存 |
3232| 声明周期不同 | 随着** 对象** 存在而存在,随着对象消失而消失 | 随着** 方法** 调用而存在,随着方法调用完毕而消失 |
3333| 初始化值不同 | 有默认的初始值 | 没有默认的初始值,必须先定义,赋值,才能使用 |
3434
@@ -69,23 +69,17 @@ Student s=new Student();
6969具体步骤:
7070
71711 . 加载Student.class文件进内存
72-
73722 . 在** 栈内存** 为s开辟空间
74-
75733 . 在** 堆内存** 为学生对象开辟空间
76-
77744 . 对学生成员变量进行默认初始化
78-
79755 . 对学生成员变量进行显示初始化
80-
81766 . 通过构造方法对学生对象的成员赋值
82-
83777 . 学生成员对象初始化完毕,将对象地址赋值给s变量。
8478
79+ ** 一个标准的手机类的代码及测试** :
8580
86- > 封装:一个标准的手机类的代码及测试
81+ - 手机类
8782
88- > 手机类
8983``` java
9084public class SmartPhone {
9185 private String brand;
@@ -130,7 +124,8 @@ public class SmartPhone {
130124}
131125```
132126
133- > 手机测试类1
127+ - 手机测试类1
128+
134129``` java
135130public class SmartPhoneDemo {
136131 public static void main (String [] args ) {
@@ -148,10 +143,7 @@ public class SmartPhoneDemo {
148143}
149144```
150145
151- 一个手机对象的内存简图:
152- <div align =" center " > <img src =" pics\\04_1.png " width =" 800 " /> </div ><br >
153-
154- > 手机测试类2
146+ - 手机测试类2
155147
156148``` java
157149public class SmartPhoneDemo2 {
@@ -180,16 +172,14 @@ public class SmartPhoneDemo2 {
180172}
181173```
182174
183- 多个手机对象的内存简图:
184175
185- <div align =" center " > <img src =" pics\\04_2.png " width =" 800 " /> </div ><br >
186176
187177
188178### 5. 静态变量和成员变量的区别
189179
190180| 区别 | 静态变量 | 成员变量 |
191181| :--: | :--: | :--: |
192- | 所属不同 | 属于类,所以也称为** 类变量** | 属于对象,所以也称为** 实例变量** (对象变量) |
182+ | 所属不同 | 属于类,所以也称为** 类变量** | 属于对象,所以也称为** 实例变量** (对象变量) |
193183| 内存中位置不同 | 存储于** 方法区** 的静态区 | 存储于堆内存 |
194184| 内存中出现时间不同 | 随着** 类** 的加载而加载,随着类的消失而消失 | 随着** 对象** 的创建而存在,随着对象的消失而消失 |
195185| 调用不同 | 可以通过类名调用,也可以通过对象调用 | 只能通过的对象来调用 |
@@ -267,15 +257,16 @@ Animal animal = new Cat();
267257### 5. 继承中成员变量的关系
268258- 子类中成员变量和父类中成员变量名称不同。
269259- 子类中成员变量和父类中成员变量名称相同。
270-
260+
261+
271262在子类方法中的查找顺序:
272-
263+
273264在子类方法的局部范围找,有就使用
274265
275266在子类的成员范围找,有就使用
276267
277268在** 父类的成员范围** 找,有就使用
278-
269+
279270如果还找不到,就报错
280271
281272### 6. 继承中构造方法的关系
@@ -290,7 +281,7 @@ Animal animal = new Cat();
2902813 . 如果父类中没有无参构造方法,该怎么办呢?
291282
292283方式一:子类通过super去显示调用父类其他的带参的构造方法
293-
284+
294285方式二:子类通过this去调用本类的其他构造方法
295286(子类一定要有一个去访问父类的构造方法,否则父类数据就没有初始化)
296287
@@ -458,7 +449,7 @@ final关键字是最终的意思,可以修饰类,修饰变量,修饰成员
458449在方法内部,该变量不可以被改变
459450
460451在方法声明上,分为基本类型和引用类型的情况
461-
452+
462453(1)基本类型:是值不能变
463454
464455(2)引用类型:是地址不能变,但是该对象的堆内存中的值是可以改变的
@@ -467,9 +458,10 @@ final关键字是最终的意思,可以修饰类,修饰变量,修饰成员
467458
468459在对象构造完毕前即可(非静态常量),被final修饰的变量只能赋值一次。
469460
470- > 继承:一个标准的动物类、猫类、狗类的代码及测试
461+ ** 一个标准的动物类、猫类、狗类的代码及测试** :
462+
463+ - 动物类
471464
472- > 动物类
473465``` java
474466class Animal {
475467 private String name;
@@ -506,7 +498,8 @@ class Animal{
506498}
507499```
508500
509- > 猫类
501+ - 猫类
502+
510503``` java
511504class Cat extends Animal {
512505 @Override
@@ -521,7 +514,8 @@ class Cat extends Animal{
521514}
522515```
523516
524- > 狗类
517+ - 狗类
518+
525519``` java
526520class Dog extends Animal {
527521 @Override
@@ -536,7 +530,8 @@ class Dog extends Animal{
536530}
537531```
538532
539- > 测试
533+ - 测试
534+
540535``` java
541536public class AnimalDemo {
542537 public static void main (String [] args ) {
@@ -680,9 +675,7 @@ public class PolymorphismDemo3 {
680675}
681676```
682677
683- 多态中对象内存图
684678
685- <div align =" center " > <img src =" pics\\04_3.png " width =" 800 " /> </div ><br >
686679
687680
688681### 5. 多态中的一些问题
0 commit comments