2、面向对象简介
Java语言最大特点:面向对象编程设计
面向过程:C语言,面对一个问题的解决方案
面向对象:C++/Java,模块化设计,进行重用配置,考虑标准
1、面向对象三个主要特征:
封装性:内部操作对外部不可见
继承性:已有结构的基础上继续进行功能扩充
多态性:是在继承性的基础上扩充而来的概念,指类型的转换处理
2、面向对象开发三个步骤:
OOA:面向对象分析
OOD:面向对象设计
OOP:面向对象编程
3、类与对象
类:对某一类事物共性的抽象
对象:描述一个具体的产物
类是一个模型,对象是类可以使用的实例
先有类再有对象
类的组成:
成员属性Field 简称属性
操作方法Method 对象的行为
4、类与对象的定义及使用
Java中,类是一个独立的结构体
属性就是变量
方法就是可以重复执行的代码
// 定义类 class Person { // 定义属性 String name; // 引用数据类型 默认值 null int age; // 基础数据类型 默认值 0 // 定义方法 public void tell(){ System.out.println("姓名:" + this.name + " 年龄:" + this.age); } public static void main(String[] args) { Person person = new Person(); person.name = "张三"; person.age = 18; person.tell(); // 姓名:张三 年龄:18 } }
生产对象两种方式:
1、声明并实例化对象
类名称 对象名称 = new 类名称();
2、分步完成
(1)声明对象:类名称 对象名称 = null;
(2)实例化对象:对象名称 = new 类名称();
实例化对象调用操作:
调用属性:实例化对象.成员属性;
调用方法:实例化对象.方法名称();
5、内存对象分析
最常用的2块内存空间
堆内存:保存对象具体信息 new开辟堆内存空间
栈内存:保存一块堆内存地址
/** 栈内存 堆内存 地址Ox0001 -> 对象内容 */ // 方式一 Person person = new Person(); // 方式二 Person person = null; person = new Person();
所有的对象在调用属性或方法之前,必须实例化
6、对象引用分析
同一块堆内存可以被不同的栈内存所指向,也可以更换指向
修改person2, person1也会被修改
Person person1 = new Person(); person1.name = "张三"; person1.age = 19; Person person2 = person1; person2.tell(); // 姓名:张三 年龄:19
引用传递可以发生在方法调用
public static void main(String[] args) { Person person = new Person(); person.name = "张三"; person.age = 18; change(person); // 相当于: Person temp = person; person.tell(); // 姓名:李四 年龄:18 } public static void change(Person temp){ temp.name = "李四"; // 方法结束后断开引用 }
7、引用于垃圾产生分析
垃圾空间:没有任何栈内存指向的堆内存空间
垃圾会被GC(Garbage Collector)垃圾收集器定期回收
垃圾过多会影响GC性能
一个栈内存只能保存有一个堆内存的地址数据
Person person1 = new Person(); // Ox0001 Person person2 = new Person(); // Ox0002 person2 = person1; // 此时 person2 指向的 Ox0002 对象成为了垃圾