面向对象编程思想概述
面向对象是一种编程思想(是一种更符合人思维方式的编程思想)
面向对象这种思想是在面向过程的基础上发展而来的。(那什么又是面向过程呢?)
面向过程编程思想概述
在我们学习Java面向对象内容之前的内容都属于面向过程的编程思想
也就是说,我们写一个程序,让这个程序去处理一件事情,处理这个事情的所有步骤我们都要去参与,所有的步骤我们都要亲力亲为,这个就叫做面向过程的编程思想。
例如:我们用面向过程的思想写一个求两个数和的小程序
public class Test14{ public static void main(String[] args) { int result = sum(10,20); System.out.println(result); } /* * 面向过程:所有的细节全部参与 * */ public static int sum(int a,int b) { int sum; sum=a+b; return sum; } } |
那用面向对象的方式应该如何实现上面的那个小程序/功能呢?
我们可以把我们的需求告诉一个对象,然后那个对象就把处理结果返回给我们,这个就是面向对象处理问题的思想。
例如:
public class Test14{ public static void main(String[] args) { /* * 1、创建一个可以求和的对象 * 2、指挥对象去求和 * */ Math m = new Math();//创建对象 int result = m.sum(10,20);//指挥对象调用方法进行求和 System.out.println(result); }
} /* * 这个类可能不是我们写的 * */ class Math{ public int sum(int a,int b) { int sum; sum=a+b; return sum; } } |
一、面向对象和面向过程在生活中的例子
洗衣服
面向对象:衣服交给洗衣机洗。(洗衣机就是对象)
面向过程:手洗(处理所有细节。拿盆、加水、加洗衣粉、浸泡、搓洗。。。。。。。。)
面向对象思想特点
- 是一种更符合我们思想习惯的思想
- 可以将复杂的事情简单化
- 将我们从执行者变成了指挥者(角色发生了改变)
二、经典案例:把大象装进冰箱
面向过程实现
考虑需要哪些步骤:
- 打开冰箱门
- 把大象装进冰箱
- 关闭冰箱门
public class Test14{ public static void main(String[] args) { /* * 面向过程实现把大象装进冰箱 * 1、打开冰箱门 * 2、把大象装进冰箱 * 3、关闭冰箱门 * */ // System.out.println("打开冰箱门"); open(); // System.out.println("把大象装进冰箱"); in(); // System.out.println("关闭冰箱门"); close(); }
public static void open() { System.out.println("打开冰箱门"); } public static void in() { System.out.println("大象装进冰箱"); } public static void close() { System.out.println("关闭冰箱门"); }
} |
面向对象实现
分析:
- 考虑把大象装进冰箱这个程序中有哪些对象
- 考虑每个对象应该有哪些方法
- 考虑对象之间的关系
有哪些对象?
- 场地(测试的main方法)
- 大象
- 冰箱
有哪些方法?
大象:移动方法
冰箱:开门方法 关门方法
三、面向对象的设计、开发、特征
面向对象开发
就是不断的创建对象,使用对象,指挥对象做事情。
面向对象设计
其实就是在管理和维护对象之间的关系。
面向对象特征
封装、继承、多态
四、类与对象的关系
编程语言和现实世界的关系
我们学习编程语言,就是为了模拟现实世界的事物,实现信息化。比如:去超市买东西的计费系统,去银行办业务的系统。
我们如何表示一个现实世界事物呢?
属性 就是该事物的描述信息
行为 就是该事物能够做什么
举例:学生、老师、茶杯、桌子。。。。。
在java中我们如何描述一个事物呢?
在java中我们用类来描述一个事物,所以Java程序的基本组成单位是类。
那什么是类呢?
- 类:是一组相关的属性和行为的集合(狭义的讲)
- 对象:是该类事物的具体体现
- 举例:
- 类 学生 (汽车的设计图纸)
- 对象 班长就是一个对象(具体的汽车)
备注
类:可以理解为构造对象的一个蓝图或者模版,是抽象的概念。(广义的讲)
对象:是以类为模型创建的具体实例,是对类的一种具体化。
五、类的定义
定义类其实就是定义类的成员(成员变量和成员方法)
成员变量 和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。
成员方法 和以前定义方法是一样的,只不过把static去掉。
现实世界事物的描述
属性 人的身高,体重等
行为 人可以学习,吃饭等
Java中用类(class)描述事物也是如此
成员变量 就是事物的属性
成员方法 就是事物的行为
案例:学生类和手机类的定义
学生类的定义
分析:学生事物有哪些属性和行为
学生:
属性:姓名、年龄
行为:吃饭、学习
手机类的定义
分析:手机事物有哪些属性和行为
学生:
属性:品牌、价格
行为:打电话、听音乐
对象的内存图
一个对象的内存图
public class ObjectMemeryDemo01 { public static void main(String[] args) { Student s1 = new Student(); System.out.println("姓名:"+s1.name+"----"+"年龄:"+s1.age); s1.name="马保国"; s1.age=50; System.out.println("姓名:"+s1.name+"----"+"年龄:"+s1.age); } } class Student{ //成员变量 public String name; public int age; //成员方法 public void study() { System.out.println("学生要学习!!!!"); } } |
六、两个对象的内存图
public class ObjectMemeryDemo2 { public static void main(String[] args) { Student s1 = new Student(); Student s2 = new Student(); System.out.println( |