类与对象
类与对象的使用
对面向对象有了了解之后,我们来说说在具体问题中如何使用面向对象去分析问题,和如何使用面向对象。
我们把大象装冰箱为例进行分析。
在针对具体的需求,可以使用名词提炼的办法进行分析,寻找具体的对象。
需求:把大象装冰箱里
对象:大象、冰箱
分三步:
1. 打开冰箱门
2. 将大象装进去
3. 关闭冰箱门
分析发现打开、装、关闭都是冰箱的功能。即冰箱对象具备如下功能:
冰箱打开
冰箱存储
冰箱关闭
用伪代码描述,上述需求中有两个具体的事物 大象 和 冰箱
描述大象:
class 大象{
}
描述冰箱
class冰箱{
void 打开(){}
void 存储(大象){}
void 关闭(){}
}
当把具体的事物描述清楚之后,需要使用这些具体的事物,Java使用具体的事物,需要通过new关键字来创建这个事物的具体实例。
使用对象
创建冰箱的对象
冰箱 bx = new 冰箱();
调用冰箱的功能
对象.功能();
bx.打开();
bx.存储(new 大象());
bx.关闭();
总结
1、先按照名词提炼问题领域中的对象
2、对对象进行描述,其实就是在明确对象中应该具备的属性和功能
3、通过new的方式就可以创建该事物的具体对象。
4、通过该对象调用它以后的功能。
对象在代码中的体现
在分析现实生活中的事物时发现,这些事物都具有具体的特定和功能,这些特点和功能就能组成了这个特殊的事物。
描述小汽车。
分析:
事物的特点(属性):
颜色。
轮胎个数。
事物的(功能):
运行。
发现:事物其实就是由特点(属性)和行为(功能)组成的。
可以简单理解:属性就是数值,其实就是变量;行为就是功能,就是方法。
小汽车 {
颜色;
轮胎个数;
运行() { }
}
通过计算机语言Java来描述这个事物。
定义类的格式
public class 类名 {
//可编写0至n个属性
数据类型 变量名1;
数据类型 变量名2;
//可编写0至n个方法
修饰符 返回值类型 方法名(参数){
执行语句;
}
}
汽车类
public class Car {
String color;
int number;
void run() {
System.out.println(color + ":" + number);
}
}
通过代码的描述,知道类的真正意义就是在描述事物。属性和功能统称为事物中的成员。
事物的成员分为两种:成员属性和成员功能。
成员属性在代码中的体现就是成员变量
成员功能在代码中的体现就是成员方法
把写好的代码测试一下。需要一个可以独立运行类。
创建对象的格式
类名 对象名 = new 类名();
测试类
public class CarDemo {
public static void main(String[] args) {
/*
* 测试:Car类中的run方法。
*/
// 1,创建Car的对象。给对象起个名字。
Car c = new Car();// c是类类型的变量。c指向了一个具体的Car类型的对象。
// 2,通过已有的对象调用该对象的功能。格式:对象.对象成员;
// 3,可以该对象的属性赋值。
c.color = "red";
c.number = 4;
c.run();
}
}
对象的内存图解

类和对象的区别
类是对一类事物的描述,是抽象的
对象是一类事物的实例,是具体的
类是对象的模板,对象是类的实体

局部变量和成员变量的区别
变量根据定义位置不同,给变量起了不同的名字

在类中的位置不同 重点
成员变量:类中,方法外
局部变量:方法中或者方法声明上 (形式参数)
作用范围不一样 重点
成员变量:类中
局部变量:方法中
初始化值的不同 重点
成员变量:有默认值
局部变量:没有默认值。必须先定义,赋值,最后使用
在内存中的位置不同 了解
成员变量:堆内存
局部变量:栈内存
生命周期不同 了解
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
基本类型和引用类型作为参数传递

基本类型传递参数时,其实就是将基本数据类型变量x空间中的值复制了一份传递给调用的方法show(),当在show()方法中x接收到了复制的值,在对show()方法中对x变量进行操作,这时值会影响到show中的x。当show方法执行完成,弹栈,程序又回到main方法执行,main方法中的x值还是原来的值。

浙公网安备 33010602011771号