目录:
- 面向对象
- 面向对象介绍
- 为什么要用面向对象编程
- 面向对象.重点学习什么?
- 类和对象
- 什么是类
- 什么是对象
- 对象的属性和行为
- 类的定义
- 对象的使用
- 学生类的定义和使用
- 对象内存图
- Java内存分配
- 单个对象
- 多个对象
- 思考:
- 多个引用指向相同
- 成员变量和局部变量的区别?
- private
- private关键字
- this
- this关键字
- 封装
- 封装概述
- 封装原则
- 封装好处
- 构造方法
- 构造方法概述
- 构造方法的注意事项
- JavaBean
1.面向对象
面向对象介绍
- 并不是一个技术,而是一─种编程指导思想
- 以什么形式组织代码;以什么思路解决问题
为什么要用面向对象编程
- 因为生活中,我们解决问题时,就是采用这种指导思想去解决的。所以,我们写程序去解决问题时,如果也能采用这种指导思想就会使编程变得非常简单,程序也便于人理解
面向对象.重点学习什么?
- 学习如何自己设计对象并使用
- 学习获取已有对象并使用
2.类和对象
什么是类
- 类是对现实生活中一类具有共同属性和行为的事物的抽象
- 我们可以将其理解为对象的设计图
什么是对象
- 是能够看得到摸的着的真实存在的实体小结
- 类是对象的抽象,对象是类的实体
对象的属性和行为
- 属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值
- 行为:对象能够执行的操作
类的定义
- 类是什么:是对现实生活中一类具有共同属性和行为的事物的抽象,确定对象将会拥有的属性和行为
- 类的组成:属性和行为
- 属性:在类中通过成员变量来体现(类中方法外的变量)
- 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
对象的使用
学生类的定义和使用
- 需求:定义一个学生类,然后定义一个学生测试类,在学生测试类中通过对象完成成员变量和成员方法的使用
3.对象内存图
Java内存分配
Java程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
- 栈(虚拟机栈)
- 堆
- 栈:所有局部变量都会在栈内存中创建
- 局部变量:定义在方法中的变量或者方法声明上的变量
- 方法执行都会加载到栈中进行
- 局部变量特点:随着方法的调用而存在,随着方法的调用完毕而消失
- 代码:Student s = new Student();
- 堆:所有对象及其对应的实例变量和数组都将存储在此处
- 简单理解为: new出来的东西,都存储在堆内存
- 每一个new出来的东西都有一个地址值,使用完毕,会在垃圾回收器空闲时被回收
- 实例变量(成员变量)有初始化值:
- 基本数据类型:整数:0,浮点数:0.0,布尔: false,字符:空字符
- 引用数据类型:null
单个对象
多个对象
思考:
- 多个引用可以指向同—个对象吗?
- 如果可以,通过其中—个引用改变数据了,其他引用访问的数据改变了吗?
多个引用指向相同
成员变量和局部变量的区别?
4.private
private关键字
- 是一个权限修饰符
- 可以修饰成员(成员变量和成员方法)
- 作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问
- 针对private修饰的成员变量,如果需要被其他类使用,提供两个相应的操作:
- 提供“get变量名0)”方法,用于获取成员变量的值,方法用public修饰
- 提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰
5.this
this关键字
- 1.this限定的变量用于指代成员变量
- 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
- 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量
- 2.什么时候使用this呢?解决局部变量隐藏成员变量
- 3.this:方法被哪个对象调用,this就代表哪个对象
6.封装
1.封装概述
- 是面向对象三大特征之一(封装,继承,多态)
- 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
2.封装原则
- 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
- 成员变量private,提供对应的getXxx()/setXxx()方法
3.封装好处
- 通过方法来控制成员变量的操作,提高了代码的安全性
- 把代码用方法进行封装,提高了代码的复用性
7.构造方法
构造方法概述
- 构造方法是一种特殊的方法.
- 作用:创建对象
- 功能:主要是完成对象数据的初始化
构造方法的注意事项
- ①构造方法的创建
- 如果没有定义构造方法,系统将给出一个默认的无参数构造方法
- 如果定义了构造方法,系统将不再提供默认的构造方法
- ②构造方法的重载
- 如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法
- ③推荐的使用方式
- 永远提供无参数构造方法
JavaBean
- 就是一个Java中的类,其对象可以用于在程序中封装数据
- 举例:学生类,手机类
- 标准JavaBean须满足如下要求:
- 成员变量使用private修饰
- 提供每一个成员变量对应的setXxx() / getXxx()
- 提供一个无参构造方法
手机JavaBean
- 需求:编写手机 JavaBean,并在测试类中使用
- 提示:手机有成员变量brand(品牌)和price(价格)