七. 面向对象
7.1 面向对象概述
7.2 面向对象相关概念
-
类型
-
对象
-
对象的构成(分析)
-
/**
* 面向对象相关的概念:
* 类型:class
* 对对象的抽象的描述。是某一类事物的总体的称呼。
* 例子:动物、狗、猫、人、树、车、学生、老师。
*
* 对象:object
* 某种类型的具体的实例。
* 例子:动物园的那只老虎、我家的那只泰迪、邻居家的那只小猫、季程。教学楼门前的那颗大柳树。杨老师的那辆捷安特。季程。杨老师。
*
* 对象的构成:
* 属性+功能。
* 属性:静态的,代表了对象拥有的内容。
* 功能:动态的,代表了对象会做什么。
*
* 现实世界中是先有类型还是先有对象:
* 先有对象,根据某些对象具有相似的功能和属性,抽象了一个类型的概念。
*
*S
7.3 面向过程和面向对象对比
/* 面向对象:java 是纯粹的面向对象的编程语言。
* 面向过程:c 语言是纯粹的面向过程的编程语言。
*
* 面向过程:一种思维模式。
* 就是将要解决的问题分解为若干个步骤,按照一定的顺序,执行这些步骤代码即可。是一种线性的思维。
* 问题:
* 1:面向过程的思维适合中小型问题,功能模块相对比较少,使用线性的思维组织执行这些模块,相对容易。
* 不适用比较大的项目,模块很负责,也很多,很难使用线性的思维去组织起来。
* 2:面向过程代码的复用性很差。
*
* 使用面向过程的思维开车去拉萨:
* 先保定-石家庄-太原--银川--兰州--西宁--拉萨
* 面向对象:一种思维模式。
* 将问题中包含的对象分析出来。让对象具有我们需要的功能,然后然对象去执行功能即可完成需求。
* 使用面向对象的思维开车去拉萨:
* 一个司机会开车+一辆车会跑。到拉萨了。
7.4 案例
package com.qf.oop1;
/**
* 使用面向过程的思想来描述:
* 宋丹丹的思想就是典型的面向过程的思想。
*/
public class TestElephant {
public static void main(String[] args) {
openDoor();
elephantIn();
closeDoor();
}
public static void openDoor(){
System.out.println("打开冰箱门");
}
public static void elephantIn(){
System.out.println("大象装进了冰箱");
}
public static void closeDoor(){
System.out.println("关闭冰箱门");
}
}
package com.qf.oop1;
/**
* 使用面向对象的思想实现大象装冰箱:
* 1:分析有几个对象:(名词分析法)
* 2个对象:大象 和 冰箱
*
* 2:分析对象应该有什么功能和属性。
* 冰箱:开门,关门
* 大象:钻冰箱
*
* 3:如何得到你需要的冰箱和大象这两个对象?
* 先定义冰箱和大象的模板。
* 类就是模板。模板中定义了对象的功能和属性。
*
* 4:使用类 创建你需要的对象。
*
* 5: 使用对象执行功能。
* 对象变量.方法();
*
*/
public class TestElephantOop {
public static void main(String[] args) {
//创建一个大象
Elephant aiLi = new Elephant();
//创建一个冰箱
Fridge haiEr = new Fridge();
//使用对象执行功能
haiEr.open();
aiLi.enterFridge();
haiEr.close();
}
}
//定义冰箱的模板。
class Fridge{
//定义冰箱具有 功能。
void open(){
System.out.println("冰箱把门打开了");
}
void close(){
System.out.println("冰箱把门关闭了");
}
}
//大象的模板
class Elephant{
void enterFridge(){
System.out.println("大象很聪明,知道钻到冰箱中纳凉~~~");
}
}
7.5 类的定义和使用类创建对象
package com.qf.oop1;
/**
* 使用面向对象的思想实现大象装冰箱:
* 1:分析有几个对象:(名词分析法)
* 2个对象:大象 和 冰箱
*
* 2:分析对象应该有什么功能和属性。
* 冰箱:开门,关门
* 大象:钻冰箱
*
* 3:如何得到你需要的冰箱和大象这两个对象?
* 先定义冰箱和大象的模板。
* 类就是模板。模板中定义了对象的功能和属性。
*
* 4:使用类 创建你需要的对象。
*
* 5: 使用对象执行功能。
* 对象变量.方法();
*
* 定义类的语法:
* [类的修饰符 public] class 类名{
* //类体
* }
*
* class:是java的关键字,是用来定义类模板的。
* 类名:是一种标识符,命名规范:首字符大写,遵循驼峰命名法。类名要能体现类描述的对象的内容。
* {类体}
* 描述对象有什么功能和什么属性:
* 功能:成员方法,只写必要组成部分。
* 属性:成员变量。
*
* 模板的名字:看成一种类型
*
*/
public class TestElephantOop {
public static void main(String[] args) {
//创建一个大象
Elephant aiLi = new Elephant();
//访问对象的属性。
aiLi.size = 100;
//创建一个冰箱
Fridge haiEr = new Fridge();
haiEr.capacity = 150;
//使用对象执行功能
haiEr.open();
boolean result = aiLi.enterFridge(haiEr);
if(result){
System.out.println("大象身材纤细,成功钻进了冰箱!");
}else{
System.out.println("大象身材臃肿,该减肥了。");
}
haiEr.close();
}
}
//定义冰箱的模板。
class Fridge{
//容积的属性
int capacity;
//定义冰箱具有 功能。
void open(){
System.out.println("冰箱把门打开了");