第3章 Java与面向对象——FAQ3.01 什么是类. 对象. 属性和方法?
FAQ3.01 什么是类. 对象. 属性和方法?
答:
通常,面试过程中会涉及Java基础方面的问题,例如类、对象、变量、方法等。这要求求职者对基本面向对象编程(OOP)有一个深入的了解。
1.类
在处理复杂事物的时候,用到一种基本手段就是抽象。抽象的目的是区别事物之间的本质和不同,面向对象编程(OOP)的实质就是利用 类和对象来建立抽象模型。
类表示对象的类别,是创建对象的蓝本。建立一个事物的抽象模型,本质上就是表达该事物的性质和行为。使用类来创建抽象模型,是通过在类中定义变量和方法来实现的。
类中定义的属性是一种可存储的变量,该变量代表着该事物的具体性质。类的对象所具有的行为是由定义的方法来实现的。类中定义的变量和方法称为类的成员。
在项目开发中,类一边可通过UML建模来表示,如图:
图中定义了类Gun的成员,即类Gun的变量和方法。从UML图中可以看到,类定义如下三个变量。
caliber:是一个Double类型的变量,该变量表示了Gun类所抽象事物(枪)的口径。
length:是一个Double类型的变量,该变量表示了Gun类所抽象事物(枪)的长度。
gun_type:是一个字符串类型的变量,该变量表示了Gun类所抽象事物(枪)的类型,例如是shouqiang还是步枪。
同时类中定义了如下所示的3个方法。
fire():定义了Gun的开火行为,即fire()方法。
maintenance():定义了Gun的维护方法。
Gun():定义了一个同类同名的构造方法。
开发者可以通过UML生成代码工具或者是手工在编辑器中建立图2.1中所示的类,如下所示:
public class Gun {
// 定义枪的口径
public Double caliber;
// 定义枪的长度
public Double length;
// 定义枪的类型
public int gun_type;
// 构造方法
public Gun() {
}
// 带参数的构造方法
public Gun(String name) {
}
// 开火的方法
public void fire() {
System.out.println(gun_type +" is fireing");
}
// 维护的方法
public Boolean maintenance() {
return true;
}
}
2.对象
对象是类的实例。对象在构造时以类为蓝本,创建对象的过程叫做实例化。对象是类所表示的抽象事物的具体实例。例如前面所讲述的Gun类,可以根据Gun类创建一个ak47的对象,即Gun的具体实现。
对象可以使用UML来表示,如图2.2所示。
图2.2 对象的UML表示法
ak47是根据Gun类创建的一个对象,在Java程序中,可以使用如下代码创建一个Gun对象。
……
public static void main(String[] args) {
//建立一个Gun类对象,即Gun类的实例ak47
Gun ak47=new Gun();
//定义ak47的口径
ak47.caliber=7.6;
//定义ak47的长度
ak47.length=57.8;
//定义ak47的类型
ak47.gun_type="AK47";
//调用fire()方法
ak47.fire();
}
……
运行该示例,结果如下:
AK47 is firing