六 JAVA中的类和对象、成员变量及局部变量、封装思想和this指针

六 JAVA中的类和对象、成员变量及局部变量、封装思想和this指针

一. 主要内容
六 JAVA中的类和对象、成员变量及局部变量、封装思想和this指针
二. 面向对象思想
(1)什么是面向对象思想?面向对象思想有什么特点?
答:随着需求的更改,功能的增多,需要面对每一个步骤很复杂。能否把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起。如果要使用,找到对应的类就可以了。这就是面向对象的思想。
a:是一种更符合我们思想习惯的思想
b:可以将复杂的事情简单化
c:将我们从执行者变成了指挥者,即角色发生了转换
(2)面向对象有什么特征?
答:共有三个特征:封装、继承、多态。这三个特征我们会在后面进行介绍。
2.1 类和对象概述
(1)类的相关概念
在描述类的时候,我们可以类比为描述自然界的事物。
属性: 就是该事物的描述信息
行为: 就是该事物能够做什么
经过类比,对于类的描述:
属性 ----------------- 成员变量
行为 ----------------- 成员方法
(2)成员变量和成员方法
定义类其实就是定义类的成员(成员变量和成员方法)
a:成员变量 和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。
b:成员方法 和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用。
(3)类和对象的概述
a:类:是一组相关的属性和行为的集合
b:对象:是该类事物的具体体现
c:exp:
类 水果
对象 苹果就是一个对象
(4)自己定义一个类(手机类)
A:文件名问题
在一个java文件中写两个类:一个基本的类,一个测试类。
建议:文件名称和测试类名称一致。
B:如何使用呢?
创建对象使用。
C:如何创建对象呢?
格式:类名 对象名 = new 类名();
D:如何使用成员变量呢?
格式:对象名.变量名
E:如何使用成员方法呢?
格式:对象名.方法名(…)
2.2 面向对象思想下的内存图
以第七次作业为例简单介绍相关内容: 一个对象的内存图

Student s = new Student();
System.out.println( s.getName());
System.out.println( s.getAge());

s.setName("小强");
s.setAge(20);
System.out.println( s.getName());
System.out.println( s.getAge());

六 JAVA中的类和对象、成员变量及局部变量、封装思想和this指针
三. 成员变量与局部变量
A:在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
B:在内存中的位置不同
成员变量:在堆内存
局部变量:在栈内存
C:生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
D:初始化值不同
成员变量:有默认初始化值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
note:局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
四. 封装思想
什么是封装?为什么要进行封装?如何进行封装?
答:为了程序的私密性,为了避免误的赋值而给程序带来大的影响。使用封装之后,隐藏实现细节,提供公共的访问方式、提高了代码的复用性、提高安全性。一般通过private实现。
4.1 private关键字
什么是private关键字?
答:a:是一个权限修饰符
b:可以修饰成员变量和成员方法
c:被其修饰的成员只能在本类中被访问
4.2 标准案例
private最常见的应用:
(1):把成员变量用private修饰
(2):提供对应的getXxx()和setXxx()方法
五. this关键字
A:为什么要有this
当我们的局部变量和成员变量相同的时候,如果我们不使用this关键字,那么会导致一个问题:就是局部变量隐藏了成员变量的问题
B:this关键字特点
是当前类的对象引用。
简单的记,它就代表当前类的一个对象。谁调用这个方法,那么该方法的内部的this就代表谁
C:this的应用场景
解决局部变量隐藏成员变量