Java的面向对象
- 面向过程:关注点在实现功能的步骤上
- PO:Procedure Oriented。代表语言:C 语言
- 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
- 对于简单的流程是适合使用面向过程的方式进行的。复杂的流程不适合使用面向过程的开发方式。
- 复杂流程时,代码之间的耦合度很高
- 耦合度:代码块之间的关联程度,扩展性很差
- 面向对象:关注点在实现功能需要哪些对象的参与。
- OO:Object Oriented 面向对象。包括OOA,OOD,OOP。代表语言:Java、C#、Python等。
- OOA:Object Oriented Analysis 面向对象分析。
- OOD:Object Oriented Design 面向对象设计。
- OOP:Object Oriented Programming 面向对象编程。
- 人类是以面向对象的方式去认知世界的。所以采用面向对象的思想更加容易处理复杂的问题。
- 面向对象就是分析解决这个问题都需要哪些对象的参加,然后让对象与对象之间协作起来形成一个系统。
- 面向对象开发方式耦合度低,扩展能力强。例如采用面向过程生产一台电脑,不会分CPU、内存和硬盘,它会按照电脑的工作流程一次成型。采用面向对象生产一台电脑,CPU是一个对象,内存条是一个对象,硬盘是一个对象,如果觉得硬盘容量小,后期是很容易更换的,这就是扩展性。
- 方法类似于生活中的行为概念
- 三大特征:封装,继承,多态
- OO:Object Oriented 面向对象。包括OOA,OOD,OOP。代表语言:Java、C#、Python等。
Java程序员负责将观察到的现实世界转换为虚拟世界 By 老杜
类与对象
- 类:
- 现实世界中,事物与事物之间具有共同特征,例如:刘德华和梁朝伟都有姓名、身份证号、身高等状态,都有吃、跑、跳等行为。将这些共同的状态和行为提取出来,形成了一个模板,称为类。
- 类实际上是人类大脑思考总结的一个模板,类是一个抽象的概念。
- 状态在程序中对应属性。属性通常用变量来表示。
- 行为在程序中对应方法。用方法来描述行为动作。
- 类 = 属性(实例变量) + 方法(实例方法)。
- 状态就是属性,以变量的形式具体体现(实例变量),实例就是对象
- 行为以方法的形式具体体现
- 实例变量 + 实例方法,要想被访问,必然通过对象
- 其中,方法有区别:
- 实例方法:无static修饰,调用时
obj.method() - 静态方法:有static修饰,调用时
Class.method() - public修饰,完全开放
- protected,同包+子类
- private,仅本类
- 什么都不修饰,包私有
- 实例方法:无static修饰,调用时
- 对象(实例):
- 对象是实际存在的个体。
- 对象又称为实例(instance)。
- 通过类这个模板可以实例化n个对象。(通过类可以创造多个对象)
- 例如通过“明星类”可以创造出
- “刘德华对象”和“梁朝伟对象”。
- 明星类中有一个属性姓名:String name;
- “刘德华对象”和“梁朝伟对象”由于是通过明星类造出来的,
- 所以这两个都有name属性,但是值是不同的。
- 因此这种属性被称为实例变量。
类->对象=实例化,反之则为抽象化
对象的创建和使用
- 类的定义
- 语法格式:
修饰符列表 class 类名{
属性:描述状态,实例变量/对象变量
方法:描述行为,实例方法/对象方法
}
- 语法格式:
public calss Student{String name;int age;boolean gender;public void Study(){System.out.println("正在学习);}
}
- 对象的创建与使用
- 语法格式:
类名 变量名 = new 类名(); - 实例变量/静态变量不手动赋值,则会赋默认值
- Student是一个引用数据类型,自定义类就是一种类型
- 对象创建则在堆内存中(new)开辟空间,变量保存在堆内存的内存地址
- 对象为在堆内存中开辟空间,引用是一个变量,其中存储对象的内存地址
- 访问实例变量运用”的“语法
- 空指针异常,当引用为空,而访问实例变量,运行会出问题
- 语法格式:
Student s1 = new Student();
s1.name = "CHenglongWnag";
System.out.println(s1.name);
s1.Study();
传参数
- 调用方法时传递的参数可能是基本数据类型,也可能是对象的内存地址
- 基本数据传递规则:复制一份给形参,且在方法中的改变不影响调用者的数据
- 若是传递对象的内存地址,则在方法中的改变也会影响对象的属性和方法