1 OOP
OOP,编写对象编程
OOP(object oriented programming),面向对象编程
- 把构成问题的各种事物,抽象成各个对象,这些对象具有解决问题的行为(方法),同时对象还可以具有解决很多类似问题的行为(方法),而不只是能解决一个问题。
POP(procedure oriented Programming),面向过程编程
- 分析出,解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,然后依次调用就可以了。
FP(functional programming),函数式编程
- 类似于面向过程的程序设计方式,具有很高的抽象程度。JDK8中的一些特性,可以支持使用函数式编程。
例如,完成做饭功能
面向过程:起锅–>倒油–>放葱姜蒜–>放菜–>翻炒3分钟–>放生抽–>放盐–>翻炒1分钟–>尝尝味道–>出锅
起来
面向对象:打开全自动炒菜机–>放各种配料–>启动–>出锅
注意,关键是要把炒菜机这个类给定义好,然后创建这个类的对象,调用方法完成功能
面向对象思想,是一种程序设计思想,使用这种思想进行编程的语言,就是面向对象编程语言。
Java语言是众多面向对象编程语言中的其中一种,我们需要在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。
面向对象中的对象,泛指现实中一切事物,每种事物都具备自己的属性和行为。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,定义为程序中的一种数据类型。
面向对象的思想,主要强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。
思考,java中的类是怎么来的?对象又是怎么获得的?
封装(Encapsulation)、继承(inheritance)、多态(polymorphism),是面向对象编程中的基本特征,java语言也同样具有这三种特征。后面会对这些特征进行详细的了解和学习。
2 类
java中对数据类型的描述和定义,都是抽象的,每一种数据类型,都是对同一类数据的抽象描述,描述了这种数据的基本特点。
例如,基本数据类型中的int
,就是对计算机中一个简单的32位数据的定义,描述了这种数据的基本特点和表达的含义。
例如,引用数据类型中的String
,就是对程序中的字符串这种数据的定义,描述了作为一个字符串数据,应该具有哪些属性、行为和特点。
而int
和String
都不能直接当做具体的数据来使用或者参与运算,因为它们俩个都是对数据的抽象描述,并不能当做具体的数据使用,如果想使用的这些数据的话,可以使用int
或者String
类型进行变量的声明,再用变量接收数据,然后就可以使用这个变量来进行操作。
例如,
public class Student{
public String name;
public void sayHello(){
}
}
这里我们先定了一个Student
类,这个Student
类就是一个自定义的数据类型,它本身是对学生的抽象描述,规定了一个学生数据,应该具有一个String
类型的name属性,以及有一个sayHello
方法。
我们并不能直接使用Student
类进行操作,因为Student
类是对学生这种数据的抽象描述,但是我们可以使用Student
类声明变量,并且使用这个变量接收一个学生数据(对象),然后再使用这个变量对具体的学生数据进行操作(访问属性、调用方法)。
例如,
public static void main(String[] args){
//使用Student类,声明变量
Student stu;
//使用这个变量,接收一个具体的学生数据(也就是对象)
stu = new Student();
//使用对象访问它的的属性和调用它的方法
stu.name = "tom";
stu.sayHello();
}
3 对象
放眼望去,我们身边的能看到的东西,都是对象,例如桌子,椅子,话筒,电脑,鼠标,水杯等等,面向对象的思想中,一切皆为对象。
思考,类和对象的关系是什么?
通过前面的学习可知,类是一组相关属性和行为的集合,它是对某一种具体事物的抽象描述。
也可以把类看作一个模板,我们使用的对象,就是按照这个模板中的定义,来进行创建的。
- 类是对一类事物的描述,是抽象的
- 对象是一类事物的实例,是具体的
- 类是对象的模板,对象是类的实体
例如,
对猫的定义:(这就相等于定义了一个类)
- 属性:名字、体重、年龄、颜色
- 行为:走、跑、叫
我家里的小猫皮皮:(这就是一个具体的对象)
- 名字:皮皮,体重:3KG,年龄:3岁,颜色:白色
- 皮皮可以走,也可以跑,也可以喵喵的叫
可以看出,皮皮这个小猫(对象),完全符合上面对猫的定义的一切属性和行为。
一个类的对象,也就是这个类的具体实例。
所以说,类是一种抽象的数据描述,对象是类的一个具体的实例。
思考,有对象之后,可以使用对象做什么?
4 引用
引用类型的变量,简称引用。
引用是可以指向对象的,简称引用指向对象。
使用类创建对象之后,怎么给对象起一个名字,以便后面对这个对象进行操作
例如,
//使用new 加上 Student类中构造器,来创建Student类的对象
new Student();
//为了能方便的使用这个对象,就可以给这个对象起一个名字
//这个过程,其实就是之前学习过的 =号赋值操作
//把新创建的学生对象,赋值给了引用stu
Student stu = new Student();
//后面就可以使用引用stu来操作对象了,也就是访问对象中的属性和调用对象中的方法
stu.name = "tom";
stu.sayHello();
思考,如果没给对象起名字,这个对象能使用么?
能使用,但是只能在创建这个对象的同时就使用,并且只能使用一次,后面就不能使用了,因为它没有名字,无法在语法上面标示对这个对象进行使用
例如,
(new Student()).sayHello()