什么是OOP
面向对象程序设计(Object Oriented Programming,OOP)
什么是对象
万事万物皆对象
对象强调的是一个具体的个体
例如:杨树就不是对象,我家门前第一颗杨树就是对象。
对象由什么构成
对象由状态和行为构成。
对象的状态是指对象的数据,对象的状态由变量表示,也叫对象的属性。
对象的行为是指对象的功能,对象的行为由方法表示。
例如:
对象是怎么创建的
对象是由类实例化时创建的,因此创建对象必须先定义类。
类是对象的模板,类中定义了什么属性和方法,由这个类实例化的对象就有什么属性和方法。
类是一次性定义,对象可以多次创建。
什么是类
类是具有相同的状态和相同的行为的一组对象的集合。
类和对象是什么关系
类和对象的关系就如同模具和用这个模具制作出来的物品之间的关系。一个类给出它的全部对象的一个统一的定义,而它的每个对象则是符合这种定义的一个实体(也称作实例),因此类和对象的关系就是抽象和具体的关系。
定义类
类的构成
类是由属性和方法构成的
类的定义
注意:
1、public类的类名必须和类所在文件的文件名一致
2、如果不是public类,那么类名与类所在的文件名可以不一致
3、类名的命名规范是:帕斯卡命名法
实例化对象
通过类创建对象的过程称为类的实例化。实例化的结果是产生了一个实例,实例也叫对象。
实例化对象
语法
new就是实例化的意思,new也是分配内存的意思
示例
对象的内存分配
使用对象
对象调用属性和方法是使用成员运算符.来完成的
对象调用属性
对象调用方法
类和对象的区别
类是对某一类事物的抽象描述,不是具体的个体
对象是对某一事物的具体描述,是具体的个体
面向对象与面向过程
面向过程与面向对象都是我们编程中,编写程序的一种思维方式。
面向过程的程序设计方式
特点是按照步骤思考问题,强调步骤。
例如:求班级学生平均分,面向过程的做法是
第一步:计算班级总分
第二步:总分除以班级人数
第三步:显示平均分
面向对象的程序设计方式
特点是分析有什么对象,对象有什么数据,对象有什么操作。
例如:求班级学生平均分,面向对象的做法是
分析有什么对象:有班级对象,有学生对象
班级对象有什么数据:班级对象中有多名学生;班级对象有什么操作:班级对象有计算平均分的操作。
学生对象有什么数据:学生对象有成绩;学生对象有什么操作:无
现在主流的思想是面向对象,而实际的情况是软件设计的宏观层面是面向对象的,微观层面依然是面向过程的(方法内部的代码还是按照步骤编写的)。
OOP有什么特性
1、封装:
为了保护数据(这里的数据指的是对象的属性,而不是方法的局部变量)通过不同的访问修饰符来决定数据的读写权限。
访问修饰符:
public:公共的 public修饰的属性没有访问限制,是最宽松的封装。
protected:受保护的 protected修饰的属性同包的类和子类都能访问。
默认修饰符——default:(什么都不写)只有同包的类能够访问。
private:私有的 private修饰的属性只能在类中被访问,类外无法访问,是最严格的封装。
(private不能修饰类)
2、继承:
子类 extends 父类
子类可以调用父类的方法和属性,也可以有自己新定义的方法和属性,子类是对父类的拓展。
继承的出现提高了代码的复用性,提高了软件的开发效率。
继承也让类与类之间产生了关系,提供了多态的前提。
3、多态:
通过父类引用指向子类对象,实现了同样的代码每次会生成不同的结果(无法做出具体预测)
实现方法:
1、方法重写(公认的多态)
2、方法重载(非公认的多态)
什么是方法重载
方法重载的定义
在同一个类中:同名不同参,与返回值无关。
例如:
方法重载的调用
方法重载根据参数匹配原则进行调用