Java 对象和类怎么用?

文章导读
上一个 测验 下一个 Java 是一种面向对象的编程语言。在 Java 中,类和对象 是面向对象编程系统中的基本且重要的特性,Java 支持以下基本的 OOP 概念:
📋 目录
  1. A 什么是 Java 类?
  2. B Java 类的特性
  3. C 类变量的类型
  4. D 创建(声明)Java 类
  5. E 什么是 Java 对象?
  6. F 创建(声明)Java 对象
  7. G 访问实例变量和方法
  8. H 使用类和对象概念的规则
  9. I Java Package
  10. J Import Statements
A A

Java - 类和对象



上一个
测验
下一个

Java 是一种面向对象的编程语言。在 Java 中,类和对象 是面向对象编程系统中的基本且重要的特性,Java 支持以下基本的 OOP 概念:

  • Classes
  • Objects
  • Inheritance
  • Polymorphism
  • Encapsulation
  • Abstraction
  • Instance
  • Method
  • Message Passing

在本教程中,我们将学习 Java 类和对象、类和对象的创建、访问类方法等内容。

什么是 Java 类?

是一个蓝图,用于创建单个对象(或者说,类是对象类型的数据类型)。在 Java 中,一切都与类和对象相关。每个类都有其方法和属性,这些可以通过对象来访问和操作。

例如,如果你想为学生创建一个类,那么“Student”就是一个类,而学生记录(如student1student2等)就是对象。

我们也可以将类视为一个工厂(用户定义的蓝图)来生产对象。

Java 类的特性

  • 类不占用任何内存字节。
  • 类就像现实世界的实体,但它不是现实世界的实体。它是一个蓝图,我们在其中指定功能。
  • 类主要包含两样东西:方法和数据成员。
  • 类也可以是嵌套类。
  • 类遵循所有 OOP 规则,如 inheritance、encapsulation、abstraction 等。

类变量的类型

一个类可以包含以下任何类型的变量。

  • Local variables − 在方法、构造函数或代码块内定义的变量称为局部变量。变量将在方法内声明和初始化,当方法执行完毕时变量将被销毁。

  • Instance variables − 实例变量是类内的变量,但位于任何方法外部。这些变量在类实例化时初始化。实例变量可以从该类中的任何方法、构造函数或代码块内访问。

  • Class variables − 类变量是在类内声明的变量,位于任何方法外部,并使用 static 关键字。

创建(声明)Java 类

要创建(声明)一个类,需要使用访问修饰符,后跟class关键字和类名

创建 Java 类的语法

使用以下语法在 Java 中创建(声明)类:

access_modifier class class_name{
  data members;
  constructors;
  methods;
  ...;
}

Java 类的示例

在这个示例中,我们创建了一个名为“Dog”的类。其中,类的属性是breedagecolor。类的方法是setBreed()setAge()setColor()printDetails()

// 创建一个 Java 类
class Dog {
  // 声明并初始化属性
  String breed;
  int age;
  String color;

  // 设置狗的品种、年龄和颜色的方法
  public void setBreed(String breed) {
    this.breed = breed;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public void setColor(String color) {
    this.color = color;
  }

  // 打印所有三个值的方法
  public void printDetails() {
    System.out.println("狗的详细信息:");
    System.out.println(this.breed);
    System.out.println(this.age);
    System.out.println(this.color);
  }
}

什么是 Java 对象?

objectclass 类型的变量,它是面向对象编程系统中的基本组件。一个 class 具有方法和数据成员(属性),这些方法和数据成员通过 object 进行访问。因此,object 是 class 的一个实例。

如果我们观察现实世界,会发现周围有很多对象,比如汽车、狗、人等。所有这些对象都有状态和行为。

以狗为例,它的状态包括 - 名字、品种和颜色,行为包括 - 吠叫、摇尾巴和奔跑。

如果将软件对象与现实世界的对象进行比较,它们具有非常相似的特性。软件对象也有状态和行为。软件对象的状态存储在字段中,行为通过方法体现。因此,在软件开发中,方法操作对象的内部状态,对象之间的通信也通过方法进行。

创建(声明)Java 对象

如前所述,class 为对象提供了蓝图。因此,基本上,对象是从 class 创建的。在 Java 中,使用 new 关键字来创建新对象。

从 class 创建对象有三个步骤 −

  • Declaration − 声明一个带有对象类型的变量名。

  • Instantiation − 使用 'new' 关键字创建对象。

  • Initialization − 'new' 关键字后跟构造函数调用。此调用初始化新对象。

创建 Java 对象的语法

考虑以下在 Java 中创建 class 对象的语法:

Class_name object_name = new Class_name([parameters]);

注意:parameters 是可选的,可以在使用 class 中的构造函数时使用。

创建 Java 对象的示例

在这个示例中,我们创建了 Dog class 的一个名为 obj 的对象,并访问其方法。

// 创建一个 Java class
class Dog {
  // 声明并初始化属性
  String breed;
  int age;
  String color;

  // 设置狗的品种、年龄和颜色的方法
  public void setBreed(String breed) {
    this.breed = breed;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public void setColor(String color) {
    this.color = color;
  }

  // 打印所有三个值的方法
  public void printDetails() {
    System.out.println("狗的详细信息:");
    System.out.println(this.breed);
    System.out.println(this.age);
    System.out.println(this.color);
  }
}

public class Main {
  public static void main(String[] args) {
    // 创建 Dog class 的对象
    Dog obj = new Dog();

    // 设置属性
    obj.setBreed("Golden Retriever");
    obj.setAge(2);
    obj.setColor("Golden");

    // 打印值
    obj.printDetails();
  }
}

输出

狗的详细信息:
Golden Retriever
2
Golden

访问实例变量和方法

实例变量和方法通过创建的对象来访问。要访问实例变量,以下是完全限定路径 −

/* 首先创建一个对象 */
ObjectReference = new Constructor();

/* 现在按以下方式调用变量 */
ObjectReference.variableName;

/* 现在按以下方式调用类方法 */
ObjectReference.MethodName();

示例

在这个示例中,我们创建了一个名为 Puppy 的类。在 Puppy 类的构造函数中,会打印小狗的名字,这样当对象创建时,就会打印其名字。我们添加了一个实例变量 puppyAge,并使用 getter/setter 方法来操作年龄。在 main 方法中,使用 new 操作符创建一个对象。使用 setAge() 方法更新年龄,并使用 getAge() 打印年龄。

public class Puppy {
   int puppyAge;

   public Puppy(String name) {
      // 这个构造函数有一个参数,<i>name</i>。
      System.out.println("Name chosen is :" + name );
   }

   public void setAge( int age ) {
      puppyAge = age;
   }

   public int getAge( ) {
      System.out.println("Puppy's age is :" + puppyAge );
      return puppyAge;
   }

   public static void main(String []args) {
      /* 对象创建 */
      Puppy myPuppy = new Puppy( "tommy" );

      /* 调用类方法设置小狗的年龄 */
      myPuppy.setAge( 2 );

      /* 调用另一个类方法获取小狗的年龄 */
      myPuppy.getAge( );

      /* 也可以按以下方式访问实例变量 */
      System.out.println("Variable Value :" + myPuppy.puppyAge );
   }
}

输出

如果我们编译并运行上述程序,它将产生以下结果 −

Name chosen is :tommy
Puppy's age is :2
Variable Value :2

使用类和对象概念的规则

现在让我们来看看源文件声明规则(使用 Java 类和对象方法)。这些规则在源文件中声明类、import 语句和 package 语句时是必不可少的。

  • 每个源文件只能有一个 public 类。

  • 一个源文件可以有多个非 public 类。

  • public 类的名称也应该是源文件的名称,并在末尾附加 .java。例如 − 类名是 public class Employee{},则源文件应为 Employee.java。

  • 如果类定义在 package 中,则 package 语句应是源文件中的第一条语句。

  • 如果存在 import 语句,则它们必须写在 package 语句和类声明之间。如果没有 package 语句,则 import 语句应是源文件的第一行。

  • Import 和 package 语句将适用于源文件中所有类。不可能为源文件中的不同类声明不同的 import 和/或 package 语句。

类有几种访问级别,并且有不同类型的类;abstract classes、final classes 等。我们将在访问修饰符章节中解释所有这些。

除了上述类型的类之外,Java 还有一些特殊的类,称为 Inner classes 和 Anonymous classes。

Java 类和对象的更多示例

示例 1

Employee 类有四个实例变量 - name、age、designation 和 salary。该类有一个明确定义的构造函数,它接受一个参数。

import java.io.*;
public class Employee {

   String name;
   int age;
   String designation;
   double salary;

   // 这是 Employee 类的构造函数
   public Employee(String name) {
      this.name = name;
   }

   // 将 Employee 的年龄赋值给 age 变量。
   public void empAge(int empAge) {
      age = empAge;
   }

   /* 将 designation 赋值给 designation 变量。*/
   public void empDesignation(String empDesig) {
      designation = empDesig;
   }

   /* 将 salary 赋值给 salary 变量。*/
   public void empSalary(double empSalary) {
      salary = empSalary;
   }

   /* 打印 Employee 详细信息 */
   public void printEmployee() {
      System.out.println("Name:"+ name );
      System.out.println("Age:" + age );
      System.out.println("Designation:" + designation );
      System.out.println("Salary:" + salary);
   }
}

正如本教程前面所述,处理从 main 方法开始。因此,为了运行这个 Employee 类,必须有一个 main 方法并创建对象。我们将为这些任务创建一个单独的类。

示例 2

以下是 EmployeeTest 类,它创建了两个 Employee 类实例,并为每个对象调用方法来为每个变量赋值。

将以下代码保存到 EmployeeTest.java 文件中。

import java.io.*;
public class EmployeeTest {

   public static void main(String args[]) {
      /* 使用构造函数创建两个对象 */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");

      // 为每个创建的对象调用方法
      empOne.empAge(26);
      empOne.empDesignation("Senior Software Engineer");
      empOne.empSalary(1000);
      empOne.printEmployee();

      empTwo.empAge(21);
      empTwo.empDesignation("Software Engineer");
      empTwo.empSalary(500);
      empTwo.printEmployee();
   }
}

输出

现在,编译两个类,然后运行 EmployeeTest 以查看如下结果 −

C:\> javac Employee.java
C:\> javac EmployeeTest.java
C:\> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0