(我一直觉得自己面向对象的理解不到位,因此决定把面向对象的一系列文章完完整整翻译一遍,加深理解。)
在本教程中,您将借助示例学习Java中类和对象的概念。
Java是一种面向对象的编程语言。面向对象方法的核心概念是将复杂问题分解为更小的对象。
对象是具有状态和行为的实体。例如,一个自行车是一个对象,它有:
- 状态:空闲,一档等
- 行为:刹车,加速等。
在了解对象之前,首先让我们了解Java中的类。
1. Java类
类是对象的蓝图。在创建对象之前,我们首先需要定义类。
我们可以把类看作是房子的草图(原型)。它包含了关于地板、门、窗等的所有细节。根据这些描述,我们建造了房子。房子就是对象。
根据同一草图可以建造出很多房子,我们也可以根据一个类创建许多对象。
1.1 在Java中创建类
我们可以使用class关键字在Java中创建类。例如,
class ClassName {
// fields
// methods
}
这里,fields(变量)和methods(方法)分别代表对象的状态和行为。
- fields用于存储数据
- methods用于执行一些操作
为了我们的bicycle对象,我们可以创建类为:
class Bicycle {
// state or field
private int gear = 5;
// behavior or method
public void braking() {
System.out.println("Working of Braking");
}
}
在上面示例中,我们创建了一个名为Bicycle的类。它包含一个名为gear的变量和一个名为braking的方法。
这里,Bicycle是一个原型。现在,我们可以使用原型创建任意数量的自行车,并且,所有自行车将共享原型的变量和方法。
注意:我们使用了关键字private和public。这些被称为访问修饰符。
2. Java对象
对象被称为类的实例。例如,假设Bicycle是一个类,那么MountainBicycle(山地自行车)、SportsBicycle(运动自行车)、TouringBicycle(旅游自行车)等都可以被视为类的对象。
2.1 在Java中创建对象
下面是我们如何创建类的对象。
className object = new className();
// for Bicycle class
Bicycle sportsBicycle = new Bicycle();
Bicycle touringBicycle = new Bicycle();
我们使用了new关键字和类的构造函数来创建一个对象。构造函数与方法类似,并且具有与类相同的名称。例如,Bicycle()是Bicycle类的构造函数。
这里,sportsBicycle和touringBicycle是对象的名称。我们可以使用它们来访问类的字段和方法。
如您所见,我们创建了该类的两个对象。我们可以在Java中创建一个类的多个对象。
注意:类的字段和方法也称为该类的成员。
3. 访问类的成员
我们可以使用对象的名称和点运算符访问类的成员。
例如:
class Bicycle {
// field of class
int gear = 5;
// method of class
void braking() {
...
}
}
// create object
Bicycle sportsBicycle = new Bicycle();
// access field and method
sportsBicycle.gear;
sportsBicycle.braking();
在上面的示例中,我们创建了一个名为Bicycle的类,它包括一个名为gear的变量和一个名为braking()的方法。注意这句话:
Bicycle sportsBicycle = new Bicycle();
这里,我们创建了一个Bicycle类的对象,名为sportsBicycle。然后,我们使用对象访问类的变量和方法。
- sportsBicycle.gear,访问gear变量
- sportsBicycle.braking(),访问braking()方法
我们已经多次提到方法一词。您将在下一章中详细了解Java方法。
现在我们了解了什么是类和对象。让我们看一个完整的示例。
3.1 示例:Java类和对象
class Lamp {
// stores the value for light
// true if light is on
// false if light is off
boolean isOn;
// method to turn on the light
void turnOn() {
isOn = true;
System.out.println("Light on? " + isOn);
}
// method to turnoff the light
void turnOff() {
isOn = false;
System.out.println("Light on? " + isOn);
}
}
class Main {
public static void main(String[] args) {
// create objects led and halogen
Lamp led = new Lamp();
Lamp halogen = new Lamp();
// turn on the light by
// calling method turnOn()
led.turnOn();
// turn off the light by
// calling method turnOff()
halogen.turnOff();
}
}
输出:
Light on? true
Light on? false
在上面的程序中,我们创建了一个名为Lamp的类,它包含一个变量isOn和两个方法:turnOn() 和 turnOff() 。
在Main类中,我们创建了两个对象:Lamp类的led和halogen。然后我们使用对象调用类的方法。
- led.turnOn() - 将isOn变量设置为true,然后打印输出。
- halogen.turnOff() - 将isOn变量设置为false,然后打印输出。
在类中定义的isOn变量也被称为实例变量。这是因为当我们创建一个类的对象时,它也被称为类的实例。并且,每个实例将具有其自己的变量副本。
这就意味着,led和halogen将会有它们自己的isOn变量副本。
3.2 示例:在同一类中创建对象
请注意,在前面的示例中,我们在另一个类中创建了对象,并访问了该类中的成员。
但是,我们也可以在同一个类中创建对象。
class Lamp {
// stores the value for light
// true if light is on
// false if light is off
boolean isOn;
// method to turn on the light
void turnOn() {
isOn = true;
System.out.println("Light on? " + isOn);
}
public static void main(String[] args) {
// create an object of Lamp
Lamp led = new Lamp();
// access method using object
led.turnOn();
}
}
输出:
Light on? true
在这里,我们在同一个类的main()方法中创建对象。
参考文档
[1]Parewa Labs Pvt.Java InputStream Class[EB/OL].https://www.programiz.com/java-programming/class-objects,2020-01-01.