1 面向过程和面向对象
1.1 概述
- 面向过程和面向对象都是一种思想,面向对象是相对于面向过程而言的。
- 面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。
- 面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。
- 面向对象,更加强调运用人类在日常的思维逻辑中采用的思想方法和原则,如抽象、分类、继承、聚合、多态等。
1.2 面向对象的三大特征
- 封装
- 继承
- 多态
1.3 面向对象的思想概述
- 程序员从面向过程的执行者转化成了面向对象的指挥者。
- 面向对象分析方法分析问题的思路和步骤:
- ①根据问题需要,选择问题所针对的现实世界中的实体。
- ②从实体中寻找问题相关的属性和功能,这些属性和功能就形成了概念世界中的类。
- ③把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义。即借助某种程序语言,把类构造成计算机能够识别和处理的数据结构。
- ④将类实例化成计算机世界中的对象。对象是计算机世界中解决问题的最终工具。
2 类和对象
2.1 类和对象的概念
- 类是对一类事物的描述,是抽象的、概念上的定义。
- 对象是实际存在的该类事物的每个个体,因此也称为实例。
- 面向对象程序设计的重点是类的设计。
- 类的设计,其实就是类的成员的设计。
2.2 java类及类的成员
- 现实世界的生物体,大到鲸鱼,小到蚂蚁,都是由最基本的细胞构成的。同理,java代码世界是由诸多个不同功能的类构成的。
- 现实生物世界中的细胞又是有细胞核、细胞质等构成。那么,java中的类class来描述事物也是如此。
- 常见的类的成员有:
- ①属性:对应类中的成员变量。
- ②行为:对应类中的成员方法。
2.3 类和对象的创建
2.3.1 类的创建
- 格式:
访问修饰符 class 类名{ 属性声明; 方法声明; }
- 说明:
- ①修饰符public表示类可以被任意访问。
- ②类的正文要用{}括起来。
- 示例:
package day06;/** * 人类 */public class Person { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; }}
2.3.2 对象的创建
- 格式:
类名 对象名 = new 类名();使用“对象名.对象成员”的方式访问对象成员(包括属性和方法)
- 示例:
package day06;public class PersonTest { public static void main(String[] args) { Person person = new Person(); person.setName("张三"); person.setAge(28); System.out.println(person); Person person1 = new Person(); person1.setName("李四"); person1.setAge(27); System.out.println(person1); }}
2.4 类的成员之属性
2.4.1 属性的语法
- 格式:
修饰符 数据类型 属性名 = 初始化值;
- 说明:
- ①修饰符:
- 常用的权限修饰符:private、缺省、protected、public。
- 其他修饰符:static、final
- ②数据类型:任何基本数据类型或引用数据类型。
- ③属性名:属于标识符,符合命名规则和规范即可。
- 示例:
package day06;/** * 人类 */public class Person { /** * 属性:姓名 */ private String name; /** * 属性:年龄 */ private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; }}
2.4.2 变量的分类:成员变量与局部变量
- 在方法体外,类体内声明的变量称为成员变量。
- 在方法体内声明的变量称为局部变量。
- 注意:成员变量和局部变量的异同。
- 相同点:都有生命周期。
- 不同点:局部变量除形参外,均需要显示初始化。
- 成员变量(属性)和局部变量的区别?
2.4.3 对象属性的默认初始化赋值
- 当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变量类型都是引用数据类型。
2.5 类的成员之方法
2.5.1 什么是方法(method、函数)
- 方法是类或对象行为特征的抽象,用来完成某个功能操作。在某些语言中也称为函数或过程。
- 将功能封装为方法的目的是,可以实现代码重用,简化代码。
- java里的方法不能独立存在,所有的方法必须定义在类里面。
2.5.2 方法的语法
- 格式:
访问修饰符 返回值类型 方法名(参数类型 形参1,参数类型 形参2,……){ //方法体; //return 返回值; return;}
- 说明:
- ①访问修饰符:private、缺省、protected、public。
- ②返回值类型:
- 没有返回值:void。
- 有返回值:和方法体中的"return 返回值"搭配使用。
- ③方法名:属于标识符,命名的时候遵循标识符命名规则和规范,见名知意。
- ④形参列表:可以包含零个、一个或多个参数。多个参数的时候,中间使用“,”隔开。
- ⑤返回值:方法在执行完毕后返还给调用它的程序的数据。
2.5.3 方法的分类:按照是否有形参和返回值
2.5.4 方法的注意事项
- 方法被调用一次,就会执行一次。
- 没有具体返回值的情况,返回值类型用关键字void表示,那么方法体可以不使用return语句。如果要使用,仅仅用来结束方法。
- 定义方法的时候,方法的结果应该返回给调用者,交由调用者自己处理。
- 方法中只能调用属性或方法,不可以在方法内部定义方法。