目录
6.1 类与对象的概念
6.1.1 面向对象的概念
面向对象编程:OOP(Object-Oriented Programming)
6.1.2 使用类和对象开发程序的基本步骤
对于面向对象编程,主要工作就是编写类。面向对象开发的步骤:
l 开发类,类= 属性(成员变量) + 方法
l 通过new关键字创建对象
l 使用类中的属性和方法:对象.属性名 对象.方法名()
6.1.3 类与对象
(1)类是一种逻辑结构,对具有公共属性特征和行为(功能)的一个群体进行描述。例如可以定义Student类描述学生的公共属性和行为,定义一个Teacher类,描述老师的公共属性和行为。
(2)定义了类之后,就可以根据类创建(new)出一个实例。比如学生张三,老师王老师。
通俗地说:
类定义了一种新的数据类型。对象就是根据类定义的变量。可以将类看做是复合类型。
类是对象的模板(template),对象是类的实例(instance)。因为对象是类的实例,所以经常会看到交换使用“对象”和“实例”这两个词。
6.2 定义类
程序= 数据 + 算法
类 = 属性 + 方法
6.2.1 类的一般形式
class 类名 { //类名通常以大写字母开始
类型 变量1;
类型 变量2;
…
类型方法名(参数列表) {
// 方法体
}
…
}
在类中定义的变量和方法都称为类的成员。所以变量又称为成员变量,方法又称为成员方法。
6.2.2 类的属性
类的成员变量又称为类的属性。
public class Student {
/**
* 属性 成员变量
* 类的{}内直接声明(定义)的变量 叫 成员变量/实例变量
*/
String name;
int age;
double score;
}
属性属于类的某个具体对象。类的每个实例(即,类的每个对象)都包含这些变量的副本,因此在类中定义的变量又被称为实例变量。
6.2.2 类的方法
方法是对象行为特征的抽象,类具有的共性的功能操作,称之为方法。方法是个“黑匣子”,完成某个特定的应用程序功能。
方法的基本语法:
修饰符 返回类型 方法名(形参列表){
public void study()
//功能代码
}
形参可以为空,可以有多个,形参的类型可以是基本类型也可以是引用类型。
public class Student {
String name;
int age;
double score;
void study(){
//
}
void show(){
//
}
}
注意:
方法中定义变量称为局部变量。
如果没有返回值,则方法的返回类型必须为void
当方法有具体的返回类型时,则必须使用return语句返回一种值。
方法深入分析:
6.3 对象的声明与创建
Student stu1; //声明对象的引用
sut1 = new Student(); //创建对象
public static void main(String[] args) {
Student stu1 = new Student();
stu1.name = "张三"; //访问对象的属性
stu1.age = 20;
stu1.score=95.5;
stu1.show(); //方法调用
Student stu2 = new Student();
stu2.name = "李四"; //访问对象的属性
stu2.age = 22;
stu2.score=98;
stu2.show(); //方法调用
Student stu3 = stu2;
sut2.show();
}
提示:如何使用对象的成员变量和方法
注意:
属性属于类的具体对象,不同对象的属性值通常是不同的。
虽然方法也是通过对象调用的,但是各对象共享相同的方法。
6.4 类练习
Teacher类
定义Teacher,属性:姓名,年龄,工资
方法:Teach(); Show();
Box类
属性:长、宽、高
方法:计算体积
Dog类:
属性:name color、age
方法:eat()
Cat类:
属性:name color、age
方法:eat()
Triangle类:底、高、计算面积
Reatangle类:长length、宽width,计算面积area
Circle类:半径,计算面积
测试类:Engineer类
6.5 为引用变量变量赋值
//Box b1 = new Box(); //创建对象,让b1指向(引用)所创建的对象
Box b2 = b1;
注意:b1和b2引用同一个对象。
对象引用与对象的关系:
(1)对象引用,有时也称为对象引用变量,或称为引用变量。
(2)对象引用与对象在物理上是两个不同的东西。
(3)对于上图,我们通常说b1引用(有时也称为指向)图中的那个Box对象。
(4)对象只能通过对象引用来操作。有时直接使用对象引用代指对象,例如对于上面的例子,有时会直接将b1引用的对象称为“对象b1”或“”b1对象。
(5)将一个对象引用赋值给另一个对象引用,则两个引用变量指向同一个对象。
(6)对引用变量进行相等性比较,例如b1==b2,是比较两个引用变量是否引用同一个对象,所以b1==b2的结果为true。对对象引用进行相等性比较,有时也直接称为对象的相等性比较。
注意:基本变量与引用变量的区别
基本类型的变量位于栈内存中,引用变量所所引用的变量位于堆内存中。
6.6 构造器/构造方法
6.6.1 构造方法的语法
构造方法的作用:开辟内存空间、创建实例、初始化属性值。
构造方法的特点:
(1)方法名与类名相同
(2)不能声明返回类型
(3)不能使用return语句
(4)通常为public
注意:
(1)如果没有明确提供构造方法,则系统会提供一个默认的构造方法,默认构造方法(也称为缺省构造方法)没有参数。
(2)如果我们提供了一个构造方法,则系统不再提供无参数的默认构造方法。
(3)如果我们提供了一个有参数的构造方法,同时又需要无参构造方法的话,则必须同时提供一个无参数的构造方法。
传入Student 改变值 指向地址
传入形参 不改变值 复制的值