面向对象
面向对象简介
面向对象的编程思想以对象的抽象为导向,将现实世界的万事万物都抽象为程序中的对象,对象是数据和操作的封装体,将一组具有相同数据和操作的对象抽象为类型(类)。
面向对象是指面向客观事物之间的关系,人类日常的思维方式是面向对象,自然界事物之间的关系是对象与对象之间的关系。
首先根据客户需求抽象出业务对象;然后对需求进行合理分层,构建相对独立的业务模块;之后设计业务逻辑,利用多态、继承、封装、抽象的编程思想,实现业务需求;最后通过整理各模块,达到高类聚,低耦合的效果,从而满足客户需求。
面向对象中有以下几个概念:
类型(类):指一个名词概念
引用(变量):指引用具体概念实例的代词
对象(东西):指具体概念的个体实例
行为:方法
多态:行为或引用,在具体情形下会发生变化的形象
封装:任何对象实例都是尽量封装,减少暴露,实现细节透明化
继承:略
类的抽象
类的抽象就是抽象类的属性和方法,属性是类的静态特征,方法是类的动态行为。
类是 Java 的数据结构,类封装了一组数据和对该数据的一组操作的集合。
例如把一本书抽象为一个类:
public class Book {
//对象的创建
//成员变量存储在堆内存中
long id; //编号
String isbn; //书号
static String name; //书名
String[] authors; //作者
double price; //价格
}
对象的创建
类是一种数据类型的定义,在程序运行中还需要对象,对象是类的实例。
生成类的实例(对象)需要使用以下语法:
Book book = new Book();
计算机执行Java程序时会在内存中开辟一块栈内存(stack)空间,在程序运行期间,JVM(Java虚拟机)还开辟了堆内存(heap)空间
栈内存空间的存储特点是"后进先出",堆内存空间的存储特点和栈不同,类似于一盘散沙,随处可以"堆放"
注意(找不到图,P115):
(1)栈内存中声明引用变量(例如:book),引用变量指向堆内存中的实例化对象(例如:Book类自定义的对象)
(2)属性有初始值
(3)我们将堆内存里的东西称为"对象",对应现实世界的事物
对象属性的自动初始化
创建完对象后,对象的属性时自动初始化的,代码如下:
public class Class02 {
public static void main(String[] args) {
Book book = new Book();
System.out.println(book.id);
System.out.println(book.name);
System.out.println(book.price);
}
}
//运算结果:0 null 0.0