Java面向对象、类、对象的学习(一)
面向过程(PO)和面向对象(OOP)
面向过程(PO): 面向过程编程:面向过程(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。面向过程是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为,注重的是过程,分析函数并一步步实现然后再调用。
简单点说面向过程就是按照解决问题的过程拆分出方法,然后按照顺序一步一步的执行方法(没有对象的调用)
**面向对象(OOP):**面向对象编程(Object Oriented Programming,面向对象程序设计)的主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为。面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现,面向对象是一种解决问题的思想,面向对象的计算机语言通过对目标对象的属性、行为封装最终拿到目标对象。
面向对象就先分析出解决问题需要的对象,然后定义对象的属性和方法,然后调用对象执行方法取解决问题
举例1: 洗衣机里面放有脏衣服,怎么洗干净?
面向过程:
1、执行加洗衣粉方法;
2、执行加水方法;
3、执行洗衣服方法;
4、执行清洗方法;
5、 执行烘干方法;
以上就是将解决这个问题的过程拆成一个个方法(是没有对象去调用的),通过一个个方法的执行来解决问题。
面向对象:
1、先拆分出两个对象:“洗衣机”对象和“人”对象
2、分析对象“洗衣机”的属性和方法:“洗衣服方法”、“清洗方法”、“烘干方法”
3、分析对象“人”的属性和方法:“加洗衣粉方法”、“加水方法”
4、然后调用对象
人.加洗衣粉
人.加水
洗衣机.洗衣服
洗衣机.清洗
洗衣机.烘干
解决同一个问题 ,面向对象编程就是先抽象出对象,然后用对象执行方法的方式解决问题。
举例2: 随机数游戏
面向过程:
1.产生随机数
2.用户输入数字
3.比较用户输入的和产生的随机数
4.打印结果
public class GuessNumber {
public static void main(String[] args) {
int num = (int) (Math.random() * 100 + 1);
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数,范围 1---100 包含1和100");
int b = 10;
while (b > 0) {
b--;
int userNum = sc.nextInt();
if (userNum > num) {
System.out.println("猜大了,您还剩" + b + "次机会。");
} else if (userNum < num) {
System.out.println("猜小了,您还剩" + b + "次机会。");
} else if (userNum == num) {
System.out.println("恭喜你!猜对了");
break;
}
}
}
}
面向对象:
1.分析对象:电脑
2.分析方法:接收输入数字,产生随机数,比较大小
3.调用对象执行方法
- 定义对象的属性和方法
public class GuessNumb {
int initNum; //随机生成的数字
int givenNum; //玩家给出的数字
/**
* 生成随机数(1~100)
*
*/
void generateNum(){
double random = Math.random();
initNum = (int) (random * 100);
}
/**
* 接受玩家输入的数字
*/
void acceptInput(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您猜的数字:");
givenNum = scanner.nextInt();
}
/**
* 判断玩家猜的数字是否正确
* 并提示
* @return 猜对了返回false; 猜错了返回true
*/
boolean checkNum(){
boolean b = true;
if(givenNum == initNum){
System.out.println("恭喜您,猜对了");
b = false;
}else if(givenNum > initNum){
System.out.println("您猜的数大了,请重新猜");
}else{
System.out.println("您猜的数小了,请重新猜");
}
return b;
}
}
- 调用对象执行方法
public static void main(String[] args) {
GuessNumb GuessNumb = new GuessNumb();
//产生随机数
GuessNumb.generateNum();
do{
//用户猜数
GuessNumb.acceptInput();
}while (GuessNumb.checkNum()); //判断猜的是否正确
}
类与对象
**类(Class):**表示一个共性的产物,是一个综合的特征
**对 象 :**是一个个性的产物,是一个个体的特征。 (类似生活中的图纸与实物的概念。)
类必须通过对象才可以使用,对象的所有操作都在类中定义。
对象是类的一个具体的实例, 是类的具体的表现
类由属性和方法组成:
-
属性:就相当于人的一个个的特征
-
方法:就相当于人的一个个的行为,例如:说话、吃饭、唱歌、睡觉
一个类要想真正的进行操作,则必须依靠对象
类的定义:
程序中用关键字class定义类
语法结构:
[修饰符] class 类名{
//属性(成员变量)
//行为(方法)
}
public class Car {
// 定义属性(成员变量)
String brand; // 品牌
String color; // 颜色
int seat; //座位数
// 定义方法(行为)
void go(){
System.out.println("在行驶...");
}
void stop(){
System.out.println("停下来了...");
}
void fly(){
System.out.println("正在飞...");
}
}
对象的定义:
- 创建对象的语法:
类名 对象名 = new 类名([参数]);
~~~java
Car car = new Car();
~~~
- 读写属性
对象名.属性名
~~~java
car.brand = "长安";
System.out.println(car.brand + car.color + car.seat);
~~~
- 调用方法
对象名.方法名([参数]);
// 创建一个Car类的对象(实例化)
Car car = new Car();
// 设置对象的属性
car.brand = "长安";
car.color = "白色";
car.seat = 5;
System.out.println(car.brand + car.color + car.seat);
// 执行对象行为(调用对象的方法)
car.go();
car.stop();
car.fly();
- 类必须编写在.java文件中;
- 一个.java文件中,可以存在N个类,但是只能存在一个public修饰的类;
- .java文件的文件名必须与public修饰的类名完全一直;
- 同一个包中不能有重名的类;