文章目录
- 1.面向对象编程
- 1.1.对比面向过程
- 1.2.万物皆对象
- 2.类和对象
- 2.1.对象(Object)
- 2.2.类(class)
- 2.3.类和对象的关系
- 2.4.类的抽取
- 2.5.Java开发的任务
- 3.类的定义与使用
- 3.1.系统已经定义的类
- 3.2.自定义类(class)
- 3.3.属性(attribute)
- 3.4.方法(method)
- 3.4.1.无参数,无返回值的方法
- 3.4.2.无参数,有返回值的方法:
- 3.4.3 有参数的方法
- 3.5.创建实例
- 3.6.案例
- 3.7.练习
- 3.8.对象成员的调用
- 3.7.成员变量和局部变量
- 4.面向对象练习
- 4.1.练习1
- 4.2.练习2
- 4.3.练习3
- 5.形参和实参
1.面向对象编程
英语:Object-oriented programming
,缩写:OOP
1.1.对比面向过程
示例:小白想吃饭。
- 面向过程:
侧重点强调一种过程,先干啥,再干啥
; - 面向对象:
侧重点强调将功能封装到对象里,强调的是具备某功能的对象
; 面向对象和面向过程不是对立,面向对象包含了面向过程
!- 面向对象的三个特征:
封装
继承;
多态。
1.2.万物皆对象
问题:我们是怎么认识世界的?
人类从就不断的接触世界上各种各样的事物(动物、植物、建筑、山川、河流…),然后通过这些事务的公共属性,归纳出这些事务的共同特征。所以,当我们见到猫的时候,不会叫老虎,见到树木的时候,不会叫花朵。我们在现实生活中,是通过具体的某种事物归纳总结它们的公共特性然后产生类(一类事物)。那么类就描述了该种事物的的共性。类相当于造事物的图纸,我们可以根据这个图纸去做出具体的实体对象。
分类是人们认识世界的一个很自然的过程,在日常生活中会不自觉地进行分类!
2.类和对象
2.1.对象(Object)
对象(object)代表现实世界中可以明确标识的一个实体。例如:一个学生、一张桌子、一间教室,一台电脑都可以看做是一个对象。每个对象都有自己独特的状态标识和行为
- 对象的属性(attribute,或者状态(state)),学生有姓名和学号,该学生特有的姓名和学号就是该学生(对象)的属性。
- 对象的行为(behavior),是由方法定义,调用对象的一个方法,其实就是给对象发消息,要求对象完成一个动作。可以定义学生对象具备学习的行为。学生对象可以调用学习的方法,执行学习的动作。
问题:说一说教室里的对象?
2.2.类(class)
- 类是对对象所应当具有的特征的描述。
- 类是抽象的存在。
- 对象是具体的存在。
2.3.类和对象的关系
类好比是图纸,对象好比是房子。
类存在的理由:可以通过这个图纸,创建多个房子。类创建对象的的过程叫做:实例化
。
2.4.类的抽取
在一组相同或类似的对象中,抽取出共性的特征和行为,保留所关注的部分。
2.5.Java开发的任务
- 使用已有的类创建对象。(jdk中提供的)
- 编写自已的类,使有自已的类创建对象。
- 调用对象的方法,属性,去解决问题。
3.类的定义与使用
3.1.系统已经定义的类
Java API提供了一些现成的类供我们使用,我们可以使用这些现有类来创建实例(对象),比如:
Scanner input= new Scanner(System.in);
input.next();
系统中还有很多的类…
使用现有类创建对象
类名 对象引用变量名 = new 类名 ();
3.2.自定义类(class)
除了使用现有API提供的类库,我们也可以自定义类。之前我们说过类是具有相同属性和相同操作的对象集合,属性就是成员变量,操作就是方法。
所以,类的定义主要有两方面组成
- 成员变量(属性)
- 方法(行为)
语法
class 类名{
成员变量(属性)定义;
方法定义;
}
注意:
- 约定俗称的命名规则
- 类名的首字母大写
- 变量名和方法名的首字母小写
- 采用驼峰命名标识
3.3.属性(attribute)
类的定义主要由属性和方法组成。属性是指类(这类事物)拥有的特征。属性,通常是名词。
- 例如:定义一个学生类,拥有的属性有:学号,姓名,年龄,家庭住址…
那么如何确定一个类拥有哪些属性(特征)?其实,一个类(一类事物)拥有的属性有很多种。
- 定义属性的语法:
- 示例:
class Student{
int num; //学号
String name; //姓名
int age; // 年龄
String address; //家庭住址
...
}
3.4.方法(method)
类的另一个成员,方法(动词)。方法,指一个类的行为(动词)。
语法格式:
方法的四个要素:
1、访问控制符
2、返回值类型------------返回值(方法调用结束之后,返回给调用者的信息) void(方法没有返回值)
3、方法名------调用的时候用来区分
4、参数列表-------------参数–方法运行时,需要的额外的信息.方法有返回值,在方法中就一定要有return
3.4.1.无参数,无返回值的方法
在学生类(Student
)中添加学习(study
)方法,和玩游戏(playGame
)方法
public void study(){
System.out.println(“努力学习”);
}
public void playGame(){
System.out.println(“开心玩游戏”);
}
3.4.2.无参数,有返回值的方法:
添加自我介绍的方法 introduce
public String introduce(){
return “我叫”+name;
}
3.4.3 有参数的方法
- 为什么要用带参数的方法?
public class ZhaZhiJi{
public String zhazhi (String fruit ) {
String juice = fruit + "汁";
return juice;
}
}
- 向学生类中添加做整数加法题的方法:
public int add(int x,int y){
int result = x+y;
return result;
}
3.5.创建实例
- 类创建对象的过程叫做实例化。
- Java中实例化对象和数组相同,也是使用new关键字。
语法:
Student stu = new Student();
创建一个Student类的对象实例(可以简称为创建一个Student类的对象),对象的名字叫做stu(对象名,通常叫做对象引用)。
3.6.案例
- 定义一个汽车类,并生产出汽车,有颜色,轮胎个数, 有运行的功能。
分析:如何描述现实世界中的事物,描述该事物的属性和行为,汽车具有颜色和轮胎数的属性,具备运行的行为。
如何使用Java语言进行转换?根据对应关系:
- 属性:类中的成员变量
- 行为:类中的成员方法
那么定义Java类就是定义一个类的成员。汽车类具备的成员是:颜色,轮胎数,运行方法。
3.7.练习
定义一个计算机类,属性(颜色、价格、品牌) 方法(加法、减法、乘法、除法)
3.8.对象成员的调用
调用对象成员
成员变量
成员方法
使用点(.
)来调用
3.7.成员变量和局部变量
- 成员变量:定义在类中的变量。
- 局部变量:定义在方法中的变量和方法的参数。
成员变量与局部变量的区别:
- 应用范围
成员变量在整个类内都有效
局部变量只在其声明的方法内有效
- 生命周期
- 成员变量: 它属于对象,它随着对象的创建而创建,随着对象的消失而消失。被同一个类中的方法共享。
- 局部变量: 使用完马上释放空间。(定义它的那一对{}),另外,局部变量,定义完成后,必须赋初值。
- 初始值
成员变量有初始值
局部变量使用前必须手动赋值
4.面向对象练习
4.1.练习1
编写教师类和学生类,并通过测试类创建对象进行测试
4.2.练习2
(1)定义一个长方形的类,属性 1高,属性2是宽,
定义两个方法,一个计算面积,一个计算周长。
(2)新建测试类,创建长方形对象,并通过控制台赋值,调用方法查看结果
4.3.练习3
(1)设计一个动物类(Animal),它包含动物的基本属性。例如名称、大小、重量等,并设计相应的动作,例如跑、跳、走等。
(2)编写测试类 TestAnimal 进行测试
5.形参和实参
形参:形式参数(声明方法时,方法中声明的参数)
实参:实际参数(调用方法时,实际传给方法的参数)
形参的改变,不会影响实参