目录
面向对象:Object Oriented Programming
面向过程:Procedure Oriented Programming
封装:Encapsulation 继承:Inheritance 多态:Polymorphism
1、面向过程
1.1、面向过程程序特点
在顺序、分支、循环结构中,操作变量中存储的数据。
1.2、面向过程思想对应的问题
面向过程这种程序设计理念,对应现实生活中某一个点上具体的问题,特别是对应解决问题过程中具体的操作步骤。
1.3、面向过程程序的不足
最大的不足:整个系统各个组成部分之间 耦合 太严重。
从开发角度来说:对任何一个细微的地方做修改、调整、升级都会不可避免的影响到其他部分。
从运行角度来说:整个系统中有任何一个数据发生了变化,相关的很多部分都要重新运算,非常浪费性能。
1.4、本质
从面向过程的思想发展到面向对象的思想根本原因就是因为随着时代、市场等方方面面的发展,要求程序员编写更加复杂的程序,设计更加庞大的系统。
由非常多组成部分有机结合在一起的系统是面向过程代码无法容纳的。
2、面向对象
将现实世界内的东西抽象为代码。
2.1、类
程序中的 类 ,对应到生活中就是对同一类事物的一个统一的 分类名称 。
交通工具 分为 自行车、汽车、轮船、火车......
2.2、类和对象的关系
从抽象和具体的角度来说:
类:抽象描述
对象:具体实体,所以对象也被称作: 类的实例
从设计图和产品的角度来说:
类:生产产品的设计图
对象:按照设计图生产出来的一个具体的产品
3、创建类和对象
3.1、类的组成部分
属性(对应程序中的数据)
通过程序中的各种数据类型,来描述一个类的 特征 ,例如:汽车的颜色、汽车的排量、汽车的价格……
通过程序中的方法(也就是面向过程视角中的函数),来执行这个类的对象能够做的『动作』。例如:汽车的行驶、汽车的鸣笛、汽车的启动、汽车的停泊……
Field = 属性 (面向对象) = 成员变量 (面向过程),Method = (成员)方法 = 函数
3.2、声明一个类
package edu.CS.javase.object.test;
public class Person {
// 属性/成员变量
// 暂时先不管声明属性的具体规则,像以前一样声明变量先使用
int weight;
//作用范围是整个类中
//这个成员变量即使没有初始化系统也会为他分配初始值
// 方法/成员函数
// 暂时先不管声明函数的具体规则,先声明一个最简单的
// public:表示这个方法可以在任何地方被调用
// void:表示这个方法没有返回值
// 方法:吃
public void eat(int food) {
weight = weight + food;
}
public void say() {
System.out.println("我现在的体重是:" + weight);
}
}
3.3、声明一个对Person进行测试的类
package edu.CS.javase.object.test;
public class Run_Person {
public static void main(String[] args) {
//1.创建Person对象
//第一步声明一个Person类这个类型的变量
//第二步使用new关键字创建Person类的对象,对象赋值给第一步声名的变量
Person person = new Person(); // new 后面的 类名() 是Person类的构造器
//2.调用Person对象的eat方法
person.eat(5);
//3.调用Person对象的say方法
person.say();
}
}
4、包
包最重要的作用:区分同名的类
将不同的类放在不同包下
简单类名和全类名
简单类名:不带包名的类名 Person
全类名:包名.类名 edu.CS.javase.object.test.Person
5、类的成员之一:属性
5.1、声明属性的语法格式
修饰符 数据类型 属性名 = 初始化值;
修饰符 常用权限修饰符有:缺省(default)、private、protected、public 其它修饰符:static、final
数据类型 任何基本数据类型(int Boolean) 或 任何引用类型数据
属性名 属于标识符,符合命名规则和规范即可
初始化值:声明一个属性时,如果没有明确对这个属性进行初始化设置,那么系统会给这个属性设置默认值,0、0.0、