一、面向对象和面向对象的区别
面向过程是一种以过程为中心的编程思想,简称OP,面向过程也可以称为面向记录的编程思想,就是分析出解决问题所需的步骤,然后用函数把这些步骤实现。
面向对象是一种以对象为编程中心的编程思想,简称OO。通过面向对象的方式,将现实世界的事物抽象成对象。
面向对象编程思想开发系统,现代开发中会将对象贯穿整个过程
①
OOA
:面向对象分析(
Object-Oriented Analysis
)
②
OOD
:面向对象设计(
Object-Oriented Design
)
③
OOP
:面向对象编程(
Object-Oriented Programming
)
二、面向对象三大特征
面向对象的三大特征
① 封装(
Encapsulation
)
② 继承(
Inheritance
)
③ 多态(
Polymorphism
)
三、类
类是现实世界当中具有共同特征的事物进行抽象形成的模板和概念,而对象是实际存在的个体。
通过类可以创建对象,对象又被称为实例,这个过程也可以称为实例化。对象具有共同特征,进行抽象形成了类,所以从对象到类称为抽象。
类=属性+方法,属性描述的是状态,方法描述的是行为动作。对象的属性以变量形式存在。
类的定义
[
修饰符
] class
类名
{
类体
=
属性
+
方法
}
对象的创建和使用
一、对象的创建与使用
一个类可以创建多个对象,语法格式为:new 类名()
java
语言当中凡是使用
class
关键字定义的类都属于引用数据类型,类名本身就是这种引用数据类型的类型名。
二、对象的使用
三、对象创建和使用的深层次解密
1、Java虚拟机
Java虚拟机内存管理
程序计数器:
1)
概念:可以看做当前线程所执行的字节码的行号指示器。
2)
特点:线程私有的内存
java
虚拟机栈(重点):
1)
概念:描述的是
java
方法执行的内存模型。(每个方法在执行的时候会创建一个
栈帧
,用于存储
局部变量
表,操作数栈,动态链接,方法出口等信息。每个方法
从调用直至完成的过程,就对应一个栈帧从入栈到出栈的过程。)
2)
特点:线程私有,生命周期和线程相同。
③ 本地方法栈:
1)
概念:它与虚拟机栈所发挥的作用是相似的,区别是
java
虚拟机栈为执行
java
方
法服务,而本地方法栈是为本地方法服务。
2)
特点:线程私有,也会抛出两类异常
java
堆(重点):
1)
概念:是被所有线程共享的一块区域,在虚拟机启动时创建。
2)
特点:线程共享,存放的是
对象实例
(所有的对象实例和数组),
GC
管理的主要
区域。可以处于物理上不连续的内存空间
方法区(重点):
1)
概念:存储已被虚拟机加载的
类信息、常量、静态变量
,即时编译器编译后的代
码等数据。
2)
特点:线程共享的区域,抛出异常
OutOfMemory 异常
Java虚拟机有三个主要的内存空间,分别是“虚拟机栈”、“方法区”、“堆区”,方法区存储类的信息,栈中存储方法执行时的栈帧以及局部变量,堆区中主要存储new出来的对象,以及对象内部的实例变量。
垃圾回收器主要针对的是堆内存,方法区最先有数据,因为程序在执行之前会先进行类加载
2、构造方法Constructor
构造方法是类中特殊的方法,通过调用构造方法来完成对象的创建,以及对象属性的初始化操作。
构造方法定义的语法格式:
[
修饰符列表
]
构造方法名
(
形式参数列表
)
{
构造方法体
;
}
① 构造方法名和类名一致。
② 构造方法用来创建对象,以及完成属性初始化操作。
③ 构造方法返回值类型不需要写,写上就报错,包括
void
也不能写。
④ 构造方法的返回值类型实际上是当前类的类型。
⑤ 一个类中可以定义多个构造方法,这些构造方法构成方法重载。