1.成员变量和局部变量的区别(理解)
- 在类中的位置不同
成员变量:类中方法外
局部变量:方法定义中或者方法声明上 - 在内存中的位置不同
成员变量:在堆中 //因为对象在堆里
局部变量:在栈中 - 生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 - 初始化值不同
成员变量:有默认值
局部变量:没有默认值,必须定义,赋值,然后才能使用
注:
(1)A方法不能访问B方法内的局部变量
(2)局部变量名称可以和成员变量名称一样,在方法中使用的是就近原则。//哪个近用哪个
(3)生命周期和初始化值的不同是由于在内存中的位置不同
2.类作形式参数:(理解) //day10-1笔记,第一点,有深入说明
- 如果你看到一个方法需要的参数是一个类名(也就是引用类型),就应该知道这里实际需要的是一个具体的对象
3.匿名对象(理解)
- 定义:没有名字的对象
- 应用场景:
- 调用方法,仅仅只调用一次的时候。//若是调用两次就会一直创建新对象,如下:
- 可以作为实际参数传递:
参考day07.03视频
- 好处:匿名对象调用完毕就是垃圾,就被垃圾回收器回收,使用它可以提高效率。但开发中用的不多
//因为栈中没有东西指向它,所以它是垃圾
4.封装思想:
- 由来(包括set,get方法的引入):
- 封装定义和设计原则:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
- private是封装的一种体现
-
封装包括很多:
类(里面包含很多方法,所以可以看成一个大的封装体),
方法(里面包含很多代码,所以可以看成一个大的封装体),
private修饰成员变量(把成员变量封装起来了) - 好处:提高代码的复用性和安全性
5.private关键字(掌握)
- 是一个权限修饰符,表示:私有的,可以修饰成员变量和成员方法 //但我们多用它修饰变量,一般不用它修饰方法
- 特点:被private修饰的后的成员只能在本类中被访问
- 应用:
以后再写一个类的时候,把所有的成员变量给private了,再提供对应的getXxx()/setXxx()方法:2019-08-17PhoneTest
//注:写方法时的顺序不重要,重要的是调用时的顺序
6.this关键字(掌握)
-
代表当前类的引用对象
-
记住:哪个对象调用方法,该方法内部的this就代表那个对象
-
this的应用场景:
-
解决了局部变量隐藏成员变量的问题 //因为:局部变量名称和成员变量名称一样时,在方法中使用的是就近原则
-
其实this还有其他的应用,day08补充
7.构造方法:
-
作用:用于对对象的数据进行初始化
-
格式:
-
方法名和类名相同
-
没有返回值类型,连void都不能有;没有返回值
-
思考:构造方法中可不可以有return语句呢?
可以。我们写成这个样子就OK了:return;
其实,在任何的void类型的方法的最后你都可以写上:return; -
构造方法的注意事项
-
构造方法也是可以重载的
-
如果我们没写构造方法,系统将提供一个默认的无参构造方法
-
如果我们给出了构造方法,不管我们给的是有参还是无参的构造方法,系统将不再提供默认构造方法
-
这个时候,如果我们还想使用无参构造方法,就必须自己给出
推荐:永远手动自己给出无参构造方法 -
所以可以知道,给成员变量赋值有两种方式:
-
无参构造方法+setXxx()
//一般情况都采用这种方法赋值,原因:单个赋值比同时赋值多个的灵活性高 -
带参构造方法
8.一个标准类的组成:
- 类:
- 成员变量:
定义在类中,方法外的变量 - 构造方法:
无参构造方法
有参构造方法 - 成员方法:
getXxx()
setXxx()
和一些其他方法…
一般用无参构造方法创建对象,用set方法赋值