Java学习笔记(六)——面向对象(基础部分)
参考教程
面向过程VS面向对象
面向过程思想:
- 步骤清晰简单,第一步做什么,第二步做什么……
- 面对过程适合处理一些较为简单的问题
面向对象思想:
- 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
- 面向对象适合处理复杂的问题,适合处理需要多人协作的问题
对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。
面向对象概念
面向对象编程(Object-Oriented Programming,OOP)本质:以类的方式组织代码,以对象的形式封装数据。
抽象:把对象的相似点抽取出来,组成一个类
三大特性:
- 封装
- 继承
- 多态
从认识论角度考虑:先有对象后有类。对象是具体的事物,类是对对象的抽象。
从代码运行角度考虑:先有类后有对象,类是对象的模板。
类与对象的关系
- 类是一种抽象的数据类型,它是对某一类事物整体描述定义,但是并不能代表某一个具体的事物。
- 对象是抽象概念的具体实例。
创建与初始化对象
使用new
关键字创建对象:创建时除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。
1 | //学生类 |
main方法里测试:
1 | public class Application { |
构造器
类中的构造器:也叫构造方法,是在进行创建对象的时候必须要调用的,并且有以下两个特点:
- 必须和类的名字相同
- 必须没有返回类型,也不加
void
新建一个空的类:
1 | public class Person { |
在main方法里实例化这个类并编译:
1 | public class Application { |
用IDEA打开out文件夹下面生成的Person.class文件:
1 | // |
证明:一个类即使什么都不写,它也会存在一个方法,即为构造方法(构造器)
构造器的作用:
- 使用
new
实例化对象的时候,本质是在调用构造器(有参构造/无参构造) - 用来初始化对象的值
有参构造与无参构造
1 | public class Person { |
main测试:
1 | public class Application { |
注意:一旦定义了有参构造,无参构造就必须显式定义
IDEA在一个类里生成构造器的快捷键:
- Alt+insert选择Constructor,直接点OK:有参构造
- Alt+insert选择Constructor,选“Select None”:无参构造
创建对象的内存分析
详情参考视频讲解
OOP基础小结
- 类与对象:类是一个抽象的模板,对象是一个具体的实例
- 方法:定义与调用
- 对应的引用:相对于八大基本类型——对象为引用类型,通过引用来操作,从栈中指向堆
- 属性:字段(Field,成员变量),会默认初始化,定义:
修饰符 属性类型 属性名 = 属性值
- 对象的创建和使用:
- 必须使用
new
关键字创建对象 - 对象的属性调用:
对象名.属性
- 对象的方法调用:
对象名.方法
- 必须使用
- 类:
- 静态的属性——属性
- 动态的行为——方法
评论
TwikooWaline