【笔记】小小白的java从0开始,第四节
# 面向对象##面向对象概述
“面向对象”(英语:Object Oriented,简称OO)是一种以事物为中心的编程思想。
面向对象程序设计(英语:Object-oriented programming,缩写:OOP),是一种程序开发的方法。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
面向对象是相对于面向过程而言的(c则是一个典型的面向过程的语言),站在面向对象的角度去看问题,你则是对象的动作指挥者。如果站在面向过程的角度去看问题,你则是动作的执行者。
面向对象与面向过程
举例解释比如:
### 面向过程:
| 买电脑 |
| -------- |
| 查资料 |
| 电脑城砍价 |
| 被坑 |
| 痛苦归来 |
### 面向对象
| 买电脑 |
| -------- |
|找对象。懂电脑的人(小明) |
| 小明.砍价 |
| 小明.检测电脑 |
| 电脑成功购买 |
PS:这个对象不是脱单的那个对象
## 区别
### 面向过程:
强调的是功能行为,面向过程”是一种以过程为中心的编程思想。“面向过程”他们不支持丰富的“面向对象”特性(比如继承、多态),就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向过程在这一系列工作的执行中,强调的是工作的执行
### 面向对象:
强调的是具备某种功能的对象
其实以后开发程序就是找对象和创建对象(没有对象创建对象)的过程
**开发**就是一个寻找对象,使用对象的过程,没有对象就创建对象
**设计**就是维护对象与对象之间的关系
## 使用Java描述事物
我们写程序就是为了方便日常生活,其实就是将生活中的事物通过编程语言使用程序描述,我们使用Java语言描述生活中的事物
### 案例:
通过Java语言定义一个汽车类,并生产出汽车,有颜色,轮胎个数,有跑的功能。
**分析:**如何描述现实世界中的事物?其实是描述该事物的属性和行为,汽车具有颜色和轮胎数的属性,具备跑的行为。
### 如何使用Java语言进行转换?
根据对应关系:
**属性**:类中的成员变量
**行为**:类中的成员函数(方法)
那么定义Java类就是定义一个类的成员。汽车类具备的成员是:颜色,轮胎数,运行方法。
Car类定义流程:
```
该类是用来描述汽车
属性:
轮子
颜色
行为:
跑
public class Car{
//描述轮子
public int wheel;
//描述颜色
public String color;
//行为:会跑,一个什么颜色,几个轮子的车在跑
public void run() {
System.out.println("一辆“+wheel+"个轮子”+color+”色的五菱宏光在马路上嘟嘟嘟……);
}
}
```
## 创建对象
### 创建Car对象
1.使用**new关键词**,就像new数组一样
2.需要给型的汽车起一个名字,**car**
3.变量都是有**类型**的,car属于什么**类型**,属于**Car类型**,叫做**类类型**
4.`Car car=new Car();`
图纸画好了,类定义成功了。如何根据图纸生产汽车,在Java中如何根据**类**来生产一个**对象**。
Java中生产汽车比较简单,通过一个关键字”new”, 通过 **newCar(); **就在内存中产生了一个实体,汽车对象就生产出来了。
汽车对象生产出来后,还没有名字,为了方便使用,需要起一个名字。就用小写的C 来表示新车的名字。
Java中的变量都需要有**类型**。那么c 是什么类型呢?c 是**Car类型**,所以c也叫做**类类型变量**。
```
//测试汽车类
public class CarTest {
public static void main (String[] args) {
//要让汽车跑起来,应该是一个实实在在的汽车
//所以需要创建汽车类的对象
//怎么创建对象? 使用new关键字
//new Car(); 就是创建对象,为了方便使用该对象,
//给该对象起一个名字与变量一样
//Java作为一门强类型的编程语言,必须指定变量的数据类型,
//类型就是类名
car = new Car();
//调用汽车跑的方法
//如何使用成员? 通过对象名 (car) ,的方式调用成员
//给车的颜色和轮子赋值
car.wheel = 4;
car. color = "绿";
car.run();
}
}
```
## 部变量和成员变量
### 局部变量和成员(全局)变量的区别
0.定义位置
局部变量:声明在局部位置,方法或者语句(for循环等语句)上
成员变量:定义在类中,
1.存储位置
局部变量:局部变量在栈内存存放
成员变量:存储在堆内存
2.默认值
局部变量:没有默认值,必须初始化
成员变量:有默认值,默认值与数据类型有关
3.生命周期
局部变量:根据语句的结束自动释放
成员变量:随着对象的存在而存在,随着对象的消失而消失
4.作用范围
局部变量:作用在方法或语句中
成员变量:作用在整个类中
注意:如果成员变量和局部变量名相同,遵循就近原则,使用局部的
`public class VariableDemo {
//全局变量
public int i;
public void show() {
//局部变量
int i = 10;
System.out.println(i);
}
public static void main(String[] args) {
//创建对象,可以在任意位置创建,只要语法不错
VariableDemo vd = new VariableDemo();
//调用方法
vd.show();
}
}`
## 匿名对象
概述:匿名对象就是没有名字的对象
应用:
0.调用且只调用一次方法时使用
1.可以将匿名对象当做方法的实际参数进行传递
好处:匿名对象会直接变成垃圾回收,节省内存空间
注意:如果该对象要频繁使用,就给对象起名字
案例:将汽车送到修理厂进行改装
### 汽车类
```
public class SportCar{
//描述轮子
public int wheel;
//描述颜色
public String color;
//速度
public double speed;
//行为:跑
public void run() {
System.out.println("一辆"+color+"色"+wheel+"个轮子的红标思域在以"+speed+"迈狂飙");
}
}
```
### 修理厂类
```
public class repairFactory{
public String name;//名字
public String address;//位置
//改装,需要送进来一辆车,需要定义形式参数
public void repair(SportCar sportCar){
//将传进来的车修改
sportCar.color = "荧光紫";
sportCar.wheel = 4;
sportCar.speed = 120;
System.out.println("欢迎你下次再来"+address+name);
}
}
```
### 测试类
```
//测试类
public class SportTest{
public static void main(String[] args){
//将车的对象创建出来
SportCar sc = new SportCar();
//赋值
sc.color = "白";
sc.speed = 60;
sc.wheeel = 8;
//将修理厂创建出来
RepairFactory repairFactory = new RepairFactory();
repairFactory.address = "中国钓鱼岛";
repairFactory.name = "中国钓鱼岛国际汽修厂";
//调用改装之前跑的方法
sc.run();
//调用修理厂改装的方法
repairFactory.repair(sc);
//再调用改装后跑的方法
sc.run();
/*
下面是另一种简洁而优雅的写法
// ------------------
//匿名对象,要让他跑
new SportCar().run();
RepairFactory repairFactory = new RepairFactory();
repairFactory.address = "中国钓鱼岛";
repairFactory.name = "中国钓鱼岛国际汽修厂";
//在创建对象时给对象赋值
repairFactory.repair(new sportCar());
*/
}
}
``` 那年夏天52 发表于 2020-5-29 10:37
面对对象编程,可是我还没找到对象呀,目前只能面对基友
面对着基友面向对象编程{:301_1001:} 面对对象编程,可是我还没找到对象呀,目前只能面对基友 写得非常详细,楼楼厉害 那年夏天52 发表于 2020-5-29 10:37
面对对象编程,可是我还没找到对象呀,目前只能面对基友
可以自己new一个{:301_997:} 靓仔小黄 发表于 2020-5-29 20:36
可以自己new一个
我new三个,早中午各一位{:301_973:} 那年夏天52 发表于 2020-5-29 20:49
我new三个,早中午各一位
就怕你一个也new不出来{:301_998:} 战之都 发表于 2020-5-30 08:49
就怕你一个也new不出来
我去,太扎心了老铁。{:301_980:} 那年夏天52 发表于 2020-5-29 20:49
我new三个,早中午各一位
注意身体{:301_988:}
页:
[1]