面向对象思想的概述
面向对象思想的举例
类和对象的关系
类的定义
对象的创建及其使用
导包:指出需要使用的类,在什么位置
对于和当前类属于同一个包的情况,可以省略导包语句不写
创建:类名称 对象名 = new 类名称();
使用:
使用成员变量:对象名.成员变量名
使用成员方法:对象名.成员方法名(参数)
手机类练习
一个对象的内存图
两个对象使用同一个方法的内存图
两个引用指向同一个对象的内存图
使用对象类型作为方法的参数
使用对象方法作为方法的返回值
成员变量和局部变量的区别
-
定义的位置不一样
局部变量:在方法内部
成员变量:在方法外部,直接写在类当中
-
作用范围不一样
局部变量:只有方法当中才可以使用,除了方法即不能再用
成员变量:整个类都可以使用。
-
默认值不一样
局部变量:没有默认值,如果要想使用,必须手动进行复制
成员变量:如果没有赋值,会有默认值,规则和数组一样
-
内存位置不一样
局部变量:位于栈内存
成员变量:位于堆内存
-
生命周期不一样
局部变量:随着方法进栈而诞生,随着方法出栈而消失。
成员变量:随着对象创建而诞生,随着独享被垃圾回收而消失。
面向对象三大特征之封装性
private关键字的作用及使用
private:不出本类不受影响,超出本类无法直接调用
练习使用private关键字定义学生类
this关键字的作用
当方法的局部变量和类的成员变量重名的时候,根据就近原则,优先使用局部变量。
如果需要访问本类中的成员变量,需要使用格式:
this.成员变量
构造方法
专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法
注意事项:
-
构造方法的名称必须和所在的类名称完全一样,就连大小写都一样
-
构造方法不要写返回值类型,连void都不写
-
构造方法不能return一个具体的值
-
如果没有编写任何构造方法,那么编辑器将会默认赠送一个构造方法,没有参数、方法体什么事都不做。
-
一旦编写了至少一个构造方法,那么编译器将不再赠送
-
构造方法可以重载
定义一个标准类