2.1 面向对象概述
“面向对象”(英语:Object Oriented,简称OO)是一种以事物为中心的编程思想。
面向对象程序设计(英语:Object-oriented programming,缩写:OOP),是一种程序开发的方法。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
面向对象是相对于面向过程而言的(c则是一个典型的面向过程的语言),站在面向对象的角度去看问题,你则是对象的动作指挥者。如果站在面向过程的角度去看问题,你则是动作的执行者。
类(Class)和对象(Object)是面向对象的核心概念。
- 类是对一类事物的描述,是抽象的、概念上的定义
- 对象是实际存在的该类事物的每个个体,因而也称为实例(instance)==实体。
- 可以理解为: 类 = 抽象概念的人; 对象 = 实实在在的某个人
- 面向对象程序设计的重点是 类的设计
- 类的设计, 其实就是类的成员的设计
2.2 面向对象与面向过程
2.2.1 举例解释比如:
1:买电脑
1:面向过程 是执行者
1:查资料
2:电脑城砍价
3:被坑
4:痛苦归来
1:面向对象 指挥者
1:找对象。懂电脑的人(小明)
2:小明.砍价
3:小明.检测电脑
4:电脑成功购买
2:吃饭
1:面向过程
1:自己动手做
2:买菜
3:洗菜
4:煮饭炒菜
5:很难吃,浪费时间
2:面向对象
1:找专业对象
2:餐馆.点餐
3:餐馆,做饭
4:饭好吃,节约时间,精力
再例如:去西藏旅行等案例只要能讲明白就行。
面向对象就是一个渐悟过程;每天给自己定个小目标100行代码;
2.2.2 区别
面向过程:强调的是功能行为,面向过程”是一种以过程为中心的编程思想。“面向过程”他们不支持丰富的“面向对象”特性(比如继承、多态),就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向过程在这一系列工作的执行中,强调的是工作的执行
面向对象:强调的是具备某种功能的对象
其实以后开发程序就是找对象和创建对象(没有对象创建对象)的过程
面向对象分析方法分析问题的思路和步骤:
-
-
- 根据问题需要,选择问题所针对的现实世界中的实体。
- 从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界中的类。
- 把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义。即借助某种程序
-
语言,把类构造成计算机能够识别和处理的数据结构。
- 将类实例化成计算机世界中的对象。对象是计算机世界中解决问题的最终工具。
2.3 面向对象好处
1.更符合人们日常的逻辑思维,更容易理解
2.开发程序更加方便,快捷
3.从以前的执行者,变成现在的指挥者
java基本元素:类和对象
类的语法结构:
修饰符 class 类名 {
属性声明;
方法声明;
}
说明:修饰符public:类可以被任意访问
类的正文要用{}括起来
举例:
public class Person{
private int age; //声明私有变量age
public void showAge(int i){//声明方法showAge()
age=I;
}
}
创建Java 自定义类
步骤:
1. 定义类(考虑修饰符、类名)
2. 编写类的属性(考虑修饰符、属性类型、属性名、初始化值)
3. 编写类的方法(考虑修饰符、返回值类型、方法名、形参等)
练习:
定义Person、Animal等类,加以体会。
2.4面向对象开发,设计和特征
2.4.1 开发:
就一个寻找对象,使用对象的过程,没有对象就创建对象
2.4.2设计:
就是维护对象与对象之间的关系
2.4.3特征:
1.封装
2.继承
3.多态
2.5 使用Java描述事物
我们写程序就是为了方便日常生活,其实就是将生活中的事物通过编程语言使用程序描述,我们使用Java语言描述生活中的事物
案例:通过Java语言定义一个汽车类,并生产出汽车,有颜色,轮胎个数,有跑的功能。
分析:如何描述现实世界中的事物?其实是描述该事物的属性和行为,汽车具有颜色和轮胎数的属性,具备跑的行为。
如何使用Java语言进行转换?
根据对应关系:
属性:类中的成员变量
行为:类中的成员函数(方法)
那么定义Java类就是定义一个类的成员。汽车类具备的成员是:颜色,轮胎数,运行方法。
Car类定义流程:
- 使用class 关键字 定义类,
-
-
- class空格 类名。类名就是标识符,命名规则,单词的首字母大写,多个单词的首字母大写。注意:不是规定,但是最好遵守
- 类名后紧跟一对{}表示类的开始和结束。
-
-
- 汽车有轮胎数 int num;
-
-
- 不需要给num初始化值,因为汽车轮胎数不确定,有4,有6,有8。
-
-
- 有颜色 String color
-
-
- 为什么使用String 例如定义颜色"红色"是字符串类型。
- 也不需要初始化值。
-
-
- 跑的行为(方法、函数) void run(){}
-
-
- 方法中执行输出语句。syso("跑啦。。。。");
-
-
代码
2.6 创建对象
创建对象语法: 类名 对象名 = new 类名();
使用“对象名. 对象成员”的方式访问对象成员(包括属性和方法)
创建Car对象
- 使用new关键词,就像new数组一样
- 需要给型的汽车起一个名字,car
- 变量都是有类型的,car属于什么类型,属于Car类型,叫做类类型
- Car car=new Car();
图纸画好了,类定义成功了。如何根据图纸生产汽车,在Java中如何根据类来生产一个对象。
Java中生产汽车比较简单,通过一个关键字”new”, 通过 new Car(); 就在内存中产生了一个实体,汽车对象就生产出来了。
汽车对象生产出来后,还没有名字,为了方便使用,需要起一个名字。就用小写的C 来表示新车的名字。
Java中的变量都需要有类型。那么c 是什么类型呢?c 是Car类型,所以c也叫做类类型变量。
创建类
public class Person {
//属性
String name;
int age=1;
boolean isMale;
//方法
public void eat(){
System.out.println("dcdsc");
}
public void sleep(){
System.out.println("睡觉");
}
public void talk(String language){
System.out.println("人说话"+language);
}
}
/*
一、设计类,其实就是设计类的成员
属性=成员变量=filed=字段
方法=成员方法=函数=method
创建类的对象=类的实例=实例化类
二、类和对象的使用(面向思想的落地)
1、创建类,设计类的成员
2,创建类的对象
3,通过“对象.属性”或“对象.方法”调用对象的结构
*/
public class PersonTest {
public static void main(String[] args) {
//创建对象,固定的格式
Person p1 =new Person();
//调用对象的结构:属性、方法
//“对象.属性”或“对象.方法”调用对象的结构
p1.name="Jack Ma";
p1.isMale=true;
System.out.println(p1.name);
//调用方法“对象.方法”
p1.eat();
p1.sleep();
p1.talk("Chinese");
}
}
注意:
类的访问机制:
- 在一个类中的访问机制: 类中的方法可以直接访问类中的成员变量 。
(: 例外:static 方法访问非 static, , 编译不通过 。 )
- 在不同类中的访问机制: 先创建要访问类的对象 , 再用对象访问类中定义的成员 。
2.7局部变量和成员变量
局部变量和成员(全局)变量的区别
0.定义位置
局部变量:声明在局部位置,方法或者语句(for循环等语句)上
成员变量:定义在类中,
1.存储位置
局部变量:局部变量在栈内存存放
成员变量:存储在堆内存
2.默认值
局部变量:没有默认值,必须初始化
成员变量:有默认值,默认值与数据类型有关
3.生命周期
局部变量:根据语句的结束自动释放
成员变量:随着对象的存在而存在,随着对象的消失而消失
4.作用范围
局部变量:作用在方法或语句中
成员变量:作用在整个类中
注意:如果成员变量和局部变量名相同,遵循就近原则,使用局部的
2.8 匿名对象(了解)
概述:匿名对象就是没有名字的对象
应用:
0.调用且只调用一次方法时使用
1.可以将匿名对象当做方法的实际参数进行传递
好处:匿名对象会直接变成垃圾回收,节省内存空间
注意:如果该对象要频繁使用,就给对象起名字