编程思想其实就是编程思路,我们开发中2种经典的编程思想就是面向过程编程思想和面向对象编程思想.
面向过程编程思想
- 强调的是过程,必须清楚每一个步骤,然后按照步骤一步一步去实现
面向对象编程思想
- 强调的是对象, 通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。
举例对比2种编程思想
-
洗衣服:
- 面向过程:把衣服脱下来–>找一个盆–>放点洗衣粉–>加点水–>浸泡10分钟–>揉一揉–>清洗衣服–>拧干–>晾起来
- 面向对象: 把衣服脱下来–>给女朋友去洗
-
吃饭
- 面向过程: 买菜—>洗菜—>炒菜—>吃
- 面向对象: 找个饭店–>15块钱
-
java程序: 需求:打印数组中所有的元素,打印格式为: [元素1,元素2,元素3,元素,…,元素n]
public class Test1 {
public static void main(String[] args) {
/*
面向过程编程思想
- 强调的是过程,必须清楚每一个步骤,然后按照步骤一步一步去实现
面向对象编程思想
- 强调的是对象, 通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。
*/
// 需求:打印数组中所有的元素,打印格式为: [元素1,元素2,元素3,元素,...,元素n]
// 1.1 定义一个数组,并且初始化数组中的元素
int[] arr = {10, 20, 30, 40, 50};
// 1.面向过程来实现该需求
// 1.1 循环遍历数组中每一个元素
for (int i = 0; i < arr.length; i++) {
// 1.2 在循环中,取出遍历出来的元素
int e = arr[i];
// 1.3 判断遍历出来的元素
if (i == 0) {
// 1.4 如果是第一个元素,打印格式为: [ + 元素 + 逗号空格
System.out.print("[" + e + ", ");
} else if (i == arr.length - 1) {
// 1.4 如果是最后一个元素,打印格式为: 元素 + ]
System.out.println(e + "]");
} else {
// 1.4 如果是中间元素,打印格式为: 元素 + 逗号空格
System.out.print(e + ", ");
}
}
System.out.println("+============================================");
// 2.面向对象来实现该需求
// jdk中提供了一个Arrays类的toString方法,可以帮助我们按照这种格式打印数组中的所有元素
System.out.println(Arrays.toString(arr));
}
}
类的概述
- 类是用来描述一类具有共同属性和行为事物的统称。所以其实类在客观世界里是不存在的,是抽象的,只是用来描述数据信息的。
- 人类: 描述信息
- 猫类: 描述信息
- 手机类: 描述信息
- 学生类: 描述信息
- …
类的组成
- 属性:就是该事物的状态信息。
- 行为:就是该事物能够做什么。
举例
-
手机类
- 属性:品牌、价格…。
- 行为:打电话、发短信…。
对象的概念
-
对象是类的一个实例(并不是你的女朋友哈),具体存在的,看得见摸得着的,并且具备该类事物的属性和行为
- 对象的属性:对象的属性具有特定的值
- 对象的行为:对象可以操作的行为
举例
- 对象: 你手上拿的这台手机
- 属性:华为、1999。 对象的属性具体的值,类中的属性没有具体的值
- 行为:使用打电话功能,使用发短信功能。对象可以使用行为
类和对象的关系
-
类是对一类具有共同属性和行为的事物的统称,是抽象的
-
对象是一类事物的具体实例,看得见,摸的着的,真实存在的实体,是具体的
-
类是对象的抽象,对象是类的实体
类的定义步骤
①定义类
②编写类的成员变量
③编写类的成员方法
public class 类名 {// 定义一个类
// 类里面:属性(成员变量),行为(成员方法)
// 定义成员变量
数据类型 变量名1;
数据类型 变量名2;
...
// 定义成员方法
方法; 去掉static
}
举例
- 定义一个手机类,类名为(Phone),类的属性有:品牌(brand),价格(price),类的行为:打电话(call),发短信(sendMessage)
public class Phone {
// 成员变量: 属性
String brand;// 品牌
int price;// 价格
// 成员方法: 行为
/**
* 打电话的功能
*
* @param phoneNum 电话号码
*/
public void call(String phoneNum) {
System.out.println("正在给" + phoneNum + "打电话...");
}
/**
* 发短信的功能
*
* @param phoneNum 电话号码
* @param message 短信内容
*/
public void sendMessage(String phoneNum, String message) {
System.out.println("正在给" + phoneNum + "发短信,短信的内容是:" + message);
}
}
对象的创建
- 创建对象的格式:
类名 对象名 = new 类名();
- 类其实就是对象的数据类型,类是引用数据类型
- 例: Phone p1 = new Phone (); 创建了一个手机对象(Phone类的对象)
对象的使用
- 调用成员的格式:
- 访问成员变量
- 获取成员变量的值: 对象名.成员变量名
- 给成员变量赋值: 对象名.成员变量名=值;
- 访问成员方法
- 对象名.成员方法();
- 访问成员变量
public class Phone {
// 成员变量: 属性
String brand;// 品牌
int price;// 价格
// 成员方法: 行为
/**
* 打电话的功能
*
* @param phoneNum 电话号码
*/
public void call(String phoneNum) {
System.out.println("正在给" + phoneNum + "打电话...");
}
/**
* 发短信的功能
*
* @param phoneNum 电话号码
* @param message 短信内容
*/
public void sendMessage(String phoneNum, String message) {
System.out.println("正在给" + phoneNum + "发短信,短信的内容是:" + message);
}
}
public class Test {
public static void main(String[] args) {// 程序的入口
/*
- 对象的创建:
格式: 类名 对象名 = new 类名();
- 对象的使用:
访问成员变量:
获取成员变量的值: 对象名.成员变量名
给成员变量赋值: 对象名.成员变量名 = 值;
访问成员方法:
对象名.方法名(实参);
无返回值的方法: 直接调用
有返回值的方法:
直接调用: 对象名.方法名(实参);
赋值调用: 数据类型 变量名 = 对象名.方法名(实参);
输出调用: System.out.println(对象名.方法名(实参));
- 成员变量默认值:
整数类型: 默认值为0
小数类型: 默认值为0.0
布尔类型: 默认值为false
字符类型: 默认值为不可见字符 '\u0000'
引用数据类型: 默认值为null
引用类型: 类,数组,接口....
*/
// 创建Phone类的对象
Phone p1 = new Phone();
// 获取brand成员变量的值
//String b = p1.brand;
//System.out.println(b);
System.out.println(p1.brand);// null
// 获取price成员变量的值
System.out.println(p1.price);// 0
// 给成员变量赋值:
p1.brand = "华为";
p1.price = 19999;
System.out.println(p1.brand+","+p1.price);// 华为,19999
// 访问成员方法:
p1.call("10086");
p1.sendMessage("10086","请问联通客服电话号码是多少?");
}
}