八、面向对象
1.类与对象的概念
(1)面向对象的概念
面向对象编程:OOP
(2)使用类和对象开发程序的基本步骤
·开发类,类=属性(成员变量)+方法
·通过new关键字创建对象
·使用类中的属性和方法:对象.属性名 对象.方法名()
(3)类与对象
- 类是一种逻辑结构,对具有公共属性特征和行为(功能)的一个群体进行描述,可以定义Student类描述学生的公共属性和行为,定义一个Teacher类,描述老师的公共属性和行为
- 定义了类之后,就可以根据类创建(new)出一个实例
2.定义类
程序=数据+算法
类=属性+方法
(1)类的一般形式
class 类名 { //类名通常以大写字母开始
类型 变量1;
类型 变量2;
…
类型 方法名(参数列表) {
// 方法体
}
…
}
类的成员:在类中定义的变量和方法
成员变量:在类中定义的变量
成员方法:在类中定义的方法
(2)类的属性(类的成员变量)
public class Student {
String name;
int age;
double score;
}
成员变量/实例变量:类的{}内直接声明(定义)的变量
属性属于类的某个具体对象。类的每个实例(即,类的每个对象)都包含这些变量的副本,因此在类中定义的变量又被称为实例变量。
(3)类的方法
方法是对对象行为特征的抽象,类具有的共性的功能操作
基本语法:
修饰符 返回类型 方法名(形参列表){
//代码
}
形参可以为空,可以有多个,形参的类型可以是基本类型也可以是引用类型
注意:
·方法中定义变量称为局部变量。
·如果没有返回值,则方法的返回类型必须为void
·当方法有具体的返回类型时,则必须使用return语句返回一种值
3.对象的声明与创建
注意:
·属性属于类的具体对象,不同对象的属性值通常是不同的
·虽然方法也是通过对象调用的,但是各对象共享相同的方法
4.为引用变量赋值
对象引用与对象的关系:
(1)对象引用,有时也称为对象引用变量,或称为引用变量
(2)对象引用与对象在物理上是两个不同的东西
(3)我们通常说b1引用(有时也称为指向)Box对象
(4)对象只能通过对象引用来操作。有时直接使用对象引用代指对象,例如有时会直接将b1引用的对象称为“对象b1”或“b1对象”
(5)将一个对象引用赋值给另一个对象引用,则两个引用变量指向同一个对象
(6)对引用变量进行相等性比较,例如b1==b2,是比较两个引用变量是否引用同一个对象,所以b1==b2的结果为true。对对象引用进行相等性比较,有时也直接称为对象的相等性比较
注意基本变量与引用变量的区别:
基本类型的变量位于栈内存中,引用变量所引用的变量位于堆内存中
5.方法深入分析
方法可以看做是独立的功能模块,供调用模块调用,功能模块要有输入、输出,对于方法而言输入就是方法的参数,输出就是方法的返回值。调用者通过参数将需要输入的数据传递给方法,方法通过返回值将输出返回给调用者。
(1)方法的定义
·方法定义包括:访问修饰符、返回类型、方法名、形参、代码块
·方法必须有返回类型(构造方法除外),可以省略访问修饰符
·可以有参数,也可以没有参数
(2)参数的传递
方法调用中发生的数据传送是单向的,只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
参数传递:
·值传递:基本数据类型作为参数
·引用传递:对象作为参数,本质上是引用变量作为参数
(3)return
·return语句用于明确地从一个方法返回(导致程序的执行控制转移回到方法的调用者)
·如果return之后还有代码也不会执行
·如果方法的返回类型为void,可以使用return跳出函数,但是不能使用return返回数据
·可以返回对象
(4)方法的调用(因为封装,不能直接访问其他对象的成员变量)
·调用相同类中的方法:可以直接调用(本质上是使用this关键字调用)
·调用其他类中的方法:对象.方法名()
6.构造方法(构造器)
(1)作用
开辟内存空间、创建实例、初始化属性值
(2)特点
·方法名与类名相同
·不能声明返回类型
·不能使用return语句返回值
·通常用public修饰
(3)注意
·如果没有明确提供构造方法,则系统会提供一个默认的构造方法,默认构造方法(也称为缺省构造方法)没有参数
·如果提供了一个构造方法,则系统不再提供无参数的默认构造方法
·如果提供了一个有参数的构造方法,同时又需要无参构造方法的话,则必须同时提供一个无参数的构造方法