Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路程式設計

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 其他

Java API 和框架

Java 類引用

Java 有用資源

Java - 類和物件



Java 是一種面向物件的程式語言。在 Java 中,類和物件是面向物件程式設計系統中基本的、重要的特性,Java 支援以下基本OOPs 概念

  • 物件
  • 繼承
  • 多型性
  • 封裝
  • 抽象
  • 例項
  • 方法
  • 訊息傳遞

在本教程中,我們將學習 Java 類和物件,類的建立和物件的建立,訪問類方法等。

什麼是 Java 類?

一個是一個藍圖,從中建立單個物件(或者,我們可以說類是物件型別的一種資料型別)。在 Java 中,一切都是與類和物件相關的。每個類都有其可以方法屬性,可以透過物件訪問和操作。

例如,如果您想為學生建立一個類。在這種情況下,“學生”將是一個類,而學生記錄(如student1student2 等)將是物件。

我們也可以認為類是一個工廠(使用者定義的藍圖)來生成物件。

Java 類的屬性

  • 類不佔用任何記憶體位元組。
  • 類就像一個現實世界中的實體,但它不是一個現實世界中的實體。它是一個藍圖,我們可以在其中指定功能。
  • 類主要包含兩部分:方法和資料成員。
  • 類也可以是巢狀類。
  • 類遵循 OOPs 的所有規則,例如繼承、封裝、抽象等。

類變數的型別

類可以包含以下任何變數型別。

  • 區域性變數 - 在方法、建構函式或塊內定義的變數稱為區域性變數。變數將在方法中宣告和初始化,並且當方法完成時變數將被銷燬。

  • 例項變數 - 例項變數是類中的變數,但在任何方法之外。當類被例項化時,這些變數被初始化。例項變數可以從該特定類的任何方法、建構函式或塊中訪問。

  • 類變數 - 類變數是在類中宣告的變數,在任何方法之外,使用 static 關鍵字。

建立(宣告)Java 類

要建立(宣告)一個類,需要使用訪問修飾符後跟class關鍵字和類名

建立 Java 類的語法

使用以下語法在 Java 中建立(宣告)類

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

Java 類的示例

在這個例子中,我們建立了一個名為`Dog`的類。該類的屬性包括`breed`(品種)、`age`(年齡)和`color`(顏色)。類的方法包括`setBreed()`、`setAge()`、`setColor()`和`printDetails()`。

// Creating a Java class
class Dog {
  // Declaring and initializing the attributes
  String breed;
  int age;
  String color;

  // methods to set breed, age, and color of the dog
  public void setBreed(String breed) {
    this.breed = breed;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public void setColor(String color) {
    this.color = color;
  }

  // method to print all three values
  public void printDetails() {
    System.out.println("Dog detials:");
    System.out.println(this.breed);
    System.out.println(this.age);
    System.out.println(this.color);
  }
}

什麼是Java物件?

一個物件型別的一個變數,它是面向物件程式設計系統的一個基本組成部分。一個類擁有方法和資料成員(屬性),這些方法和資料成員可以透過物件訪問。因此,物件是類的例項。

如果我們考慮現實世界,我們可以發現我們周圍有很多物件,例如汽車、狗、人等等。所有這些物件都具有狀態和行為。

如果我們考慮一隻狗,那麼它的狀態是——名字、品種和顏色,而它的行為是——吠叫、搖尾巴和奔跑。

如果你將軟體物件與現實世界中的物件進行比較,它們具有非常相似的特徵。軟體物件也具有狀態和行為。軟體物件的狀態儲存在欄位中,行為透過方法體現。因此,在軟體開發中,方法操作物件的內部狀態,物件間的通訊透過方法完成。

建立(宣告)Java物件

如前所述,類為物件提供了藍圖。因此,基本上,物件是由類建立的。在Java中,`new`關鍵字用於建立新物件。

從類建立物件時,共有三個步驟:

  • 宣告——宣告一個變數,該變數具有物件型別和變數名。

  • 例項化——使用'new'關鍵字建立物件。

  • 初始化——'new'關鍵字後跟對建構函式的呼叫。此呼叫初始化新物件。

建立Java物件的語法

考慮以下在Java中建立類物件的語法:

Class_name object_name = new Class_name([parameters]);

注意:引數是可選的,在使用類中的建構函式時可以使用。

建立Java物件的示例

在這個例子中,我們建立了一個名為`obj`的`Dog`類物件,並訪問其方法。

// Creating a Java class
class Dog {
  // Declaring and initializing the attributes
  String breed;
  int age;
  String color;

  // methods to set breed, age, and color of the dog
  public void setBreed(String breed) {
    this.breed = breed;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public void setColor(String color) {
    this.color = color;
  }

  // method to print all three values
  public void printDetails() {
    System.out.println("Dog detials:");
    System.out.println(this.breed);
    System.out.println(this.age);
    System.out.println(this.color);
  }
}

public class Main {
  public static void main(String[] args) {
    // Creating an object of the class Dog
    Dog obj = new Dog();

    // setting the attributes
    obj.setBreed("Golden Retriever");
    obj.setAge(2);
    obj.setColor("Golden");

    // Printing values
    obj.printDetails();
  }
}

輸出

Dog detials:
Golden Retriever
2
Golden

訪問例項變數和方法

例項變數和方法透過建立的物件訪問。要訪問例項變數,完整的路徑如下:

/* First create an object */
ObjectReference = new Constructor();

/* Now call a variable as follows */
ObjectReference.variableName;

/* Now you can call a class method as follows */
ObjectReference.MethodName();

示例

在這個例子中,我們建立了一個名為Puppy的類。在Puppy類的建構函式中,列印小狗的名字,以便在建立物件時列印其名字。添加了一個例項變數puppyAge,並使用getter/setter方法來操作年齡。在main方法中,使用new運算子建立一個物件。使用setAge()方法更新年齡,並使用getAge()列印年齡。

public class Puppy {
   int puppyAge;

   public Puppy(String name) {
      // This constructor has one parameter, <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) {
      /* Object creation */
      Puppy myPuppy = new Puppy( "tommy" );

      /* Call class method to set puppy's age */
      myPuppy.setAge( 2 );

      /* Call another class method to get puppy's age */
      myPuppy.getAge( );

      /* You can access instance variable as follows as well */
      System.out.println("Variable Value :" + myPuppy.puppyAge );
   }
}

輸出

如果我們編譯並執行上述程式,則會產生以下結果:

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

使用類和物件概念的規則

現在讓我們看看原始檔宣告規則(使用Java類和物件方法)。這些規則在原始檔中宣告類、匯入語句和包語句時至關重要。

  • 每個原始檔只能包含一個公共類。

  • 原始檔可以包含多個非公共類。

  • 公共類名也應該與原始檔名相同,並在末尾附加.java。例如:類名為public class Employee{},則原始檔應為Employee.java。

  • 如果類在包內定義,則包語句應為原始檔中的第一條語句。

  • 如果存在匯入語句,則必須將它們寫在包語句和類宣告之間。如果沒有包語句,則匯入語句應為原始檔中的第一行。

  • 匯入和包語句將應用於原始檔中存在的所有類。不可能對原始檔中的不同類宣告不同的匯入和/或包語句。

類具有多個訪問級別,並且存在不同型別的類;抽象類、最終類等。我們將在訪問修飾符章節中解釋所有這些。

除了上述型別的類之外,Java還有一些特殊的類,稱為內部類和匿名類。

更多關於Java類和物件的示例

示例1

Employee類有四個例項變數——姓名、年齡、職位和薪水。該類有一個顯式定義的建構函式,它接受一個引數。

import java.io.*;
public class Employee {

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

   // This is the constructor of the class Employee
   public Employee(String name) {
      this.name = name;
   }

   // Assign the age of the Employee  to the variable age.
   public void empAge(int empAge) {
      age = empAge;
   }

   /* Assign the designation to the variable designation.*/
   public void empDesignation(String empDesig) {
      designation = empDesig;
   }

   /* Assign the salary to the variable	salary.*/
   public void empSalary(double empSalary) {
      salary = empSalary;
   }

   /* Print the Employee details */
   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[]) {
      /* Create two objects using constructor */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");

      // Invoking methods for each object created
      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
廣告