面向过程(Process-Oriented Programm,POP)思想思考问题时,首先思考“怎么按步骤实现?”,是一种“执行者思维”,解决简单的问题可以使用面向过程。
面向对象(Object-Oriented Programming , OOP)思想思考问题时,首先思考“怎么设计这个事物?”,是一种“设计者思维”,解决复杂、需要协作的问题可以使用面向对象,可以帮助我们从宏观上把握、从整体上分析整个系统。
都是解决问题的思维方式,都是代码组织的方式。
面向对象离不开过程:宏观上:通过面向对象进行整体设计
微观上:执行和处理数据,仍然是面向过程
面向对象编程(OOP)
面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
三大特性:封装,继承,多态
从知识论角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象
从代码运行角度考虑是先有类后有对象。类是对象创建的模板
类:一类具有相同特性的事物的抽象描述。可以看作是一个模板或者图纸,系统根据类的定义来造出对象 , class
对于一个类来说,一般有三种常见的成员,属性、方法、构造器constructor
public class TestClassObject {
public static void main(String[] args) {
//创建Teacher类的对象
Teacher t1 = new Teacher();
t1.name = "宋老师";
t1.gender = '男';
t1.teach("JavaSE");
//创建另一个Teacher类的对象
Teacher t2 = new Teacher();
t2.name = "柴老师";
t2.gender = '女';
// t2.age = 18;//错误,因为Teacher类中没有age这个属性,特征
//类模板中没有的东西,对象也没有,也不能用
t2.teach("JavaSE");
}
}
//类,声明了一个Teacher类,它代表了所有老师的共同特征
class Teacher{
String name;
char gender;
void teach(String course){
System.out.println(name + "讲授" + course +"技术,他是" + gender + "老师");
}
}
对象:可以看成该类的一个具体实例,object , instance(实例)
属性:用于定义该类或该类对象包含的数据或者说静态特征 , field
public class SxtStu {
//属性
int id;
String sname;
int age;
//方法
void study(){
System.out.println("我正在学习,正在敲代码,正在听课!不要打扰我!");
}
//构造方法(方法名和类名保持一致!)
SxtStu(){
}
public static void main(String[] args) {
SxtStu S1= new SxtStu();
System.out.println(s1,id);
System.out.println(s1,sname);
}
}
在定义成员变量时可以对其初始化,如果不对其初始化,Java系统默认的值对其初始化。
方法:用于定义该类或该类实例的行为特征和功能实现,method