目錄
Java 物件和類別
每個類別都有建構方法。如果沒有明確地為類別定義建構方法,Java編譯器將會為此類別提供一個預設構造方法。
物件是根據類別建立的。在Java中,使用關鍵字new來建立一個新的物件。建立對象需要以下三個步驟:
透過已建立的物件來存取成員變數和成員方法,如下所示:
下面的範例展示如何存取實例變數和調用成員方法:
在本節的最後部分,我們將學習原始檔的聲明規則。當在一個原始檔中定義多個類,並且還有import語句和package語句時,要特別注意這些規則。
Java包
Import语句
首頁 Java java教程 最新區別Java中類別和物件的方法,趕緊拿走不謝

最新區別Java中類別和物件的方法,趕緊拿走不謝

Jul 24, 2018 am 09:40 AM

身為資深Java的愛好者,特地歸納了這篇文檔,也希望透過分享可以幫到大家,看過之後還有不清楚物件和類別的嗎?這裡的物件不是找女朋友哦,它是類別的一個實例,有狀態和行為;而類別是一個模板,它描述一類物件的行為和狀態。

Java 物件和類別

Java作為一種物件導向語言。支援以下基本概念:

  • 多態

  • #繼承

  • 封裝

  • 抽象

  • 類別

  • #物件

  • 實例

  • 方法

  • 重載

#本節我們將重點放在物件和類別的概念上。

  • 物件:物件是類別的一個實例(物件不是找個女朋友),有狀態和行為。例如,一隻狗是一個對象,它的狀態有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。

  • 類別:類別是一個模板,它描述一類物件的行為和狀態。

下圖中男孩女孩為類,而具體的每個人為該類的物件:


##Java中的物件

現在讓我們深入了解什麼是物件。看看周圍真實的世界,會發現身邊有很多對象,車,狗,人等等。所有這些物件都有自己的狀態和行為。

拿一隻狗來舉例,它的狀態有:名字、品種、顏色,行為有:叫、搖尾巴和跑。

比較現實對象和軟體對象,它們之間十分相似。

軟體物件也有狀態和行為。軟體物件的狀態就是屬性,行為透過方法體現。

在軟體開發中,方法操作物件內部狀態的改變,物件的相互呼叫也是透過方法來完成。

Java中的類別

類別可以看成是建立Java物件的模板。

透過下面一個簡單的類別來理解下Java中類別的定義:

public class Dog{
  String breed;
  int age;
  String color;
  void barking(){
  }
 
  void hungry(){
  }
 
  void sleeping(){
  }
}
登入後複製

一個類別可以包含以下類型變數:

  • # #局部變數

    :在方法、建構方法或語句區塊中定義的變數稱為局部變數。變數宣告和初始化都是在方法中,方法結束後,變數就會自動銷毀。

  • 成員變數

    :成員變數是定義在類別中,方法體之外的變數。這種變數在創建物件的時候實例化。成員變數可以被類別中方法、建構方法和特定類別的語句區塊存取。

  • 類別變數

    :類別變數也宣告在類別中,方法體之外,但必須宣告為static型別。

  • 一個類別可以有多個方法,在上面的範例中:barking()、hungry()和sleeping()都是Dog類別的方法。

建構方法

每個類別都有建構方法。如果沒有明確地為類別定義建構方法,Java編譯器將會為此類別提供一個預設構造方法。

在建立一個物件的時候,至少要呼叫一個建構方法。建構方法的名稱必須與類別同名,一個類別可以有多個建構方法。

下面是一個建構方法範例:

public class Puppy{
    public Puppy(){
    }
 
    public Puppy(String name){
        // 这个构造器仅有一个参数:name
    }
}
登入後複製

建立物件

物件是根據類別建立的。在Java中,使用關鍵字new來建立一個新的物件。建立對象需要以下三個步驟:

  • 聲明

    :宣告一個對象,包括物件名稱和物件類型。

  • 實例化

    :使用關鍵字new來建立一個物件。

  • 初始化

    :使用new建立物件時,會呼叫建構方法初始化物件。

  • 下面是一個建立物件的範例:
public class Puppy{
   public Puppy(String name){
      //这个构造器仅有一个参数:name
      System.out.println("小狗的名字是 : " + name ); 
   }
   public static void main(String []args){
      // 下面的语句将创建一个Puppy对象
      Puppy myPuppy = new Puppy( "tommy" );
   }
}
登入後複製

編譯並執行上面的程序,會列印出下面的結果:

小狗的名字是 : tommy
登入後複製

存取實例變數和方法

透過已建立的物件來存取成員變數和成員方法,如下所示:

/* 实例化对象 */
ObjectReference = new Constructor();
/* 访问类中的变量 */
ObjectReference.variableName;
/* 访问类中的方法 */
ObjectReference.MethodName();
登入後複製

實例

下面的範例展示如何存取實例變數和調用成員方法:

public class Puppy{
   int puppyAge;
   public Puppy(String name){
      // 这个构造器仅有一个参数:name
      System.out.println("小狗的名字是 : " + name ); 
   }
 
   public void setAge( int age ){
       puppyAge = age;
   }
 
   public int getAge( ){
       System.out.println("小狗的年龄为 : " + puppyAge ); 
       return puppyAge;
   }
 
   public static void main(String []args){
      /* 创建对象 */
      Puppy myPuppy = new Puppy( "tommy" );
      /* 通过方法来设定age */
      myPuppy.setAge( 2 );
      /* 调用另一个方法获取age */
      myPuppy.getAge( );
      /*你也可以像下面这样访问成员变量 */
      System.out.println("变量值 : " + myPuppy.puppyAge ); 
   }
}
登入後複製

編譯並執行上面的程序,產生如下結果:

小狗的名字是 : tommy
小狗的年龄为 : 2
变量值 : 2
登入後複製

原始檔聲明規則

在本節的最後部分,我們將學習原始檔的聲明規則。當在一個原始檔中定義多個類,並且還有import語句和package語句時,要特別注意這些規則。

    一個原始檔只能有一個public類別
  • 一個原始檔可以有多個非public類別
  • #來源檔案的名稱應該要和public類別的類別名稱保持一致。例如:原始檔中public類別的類別名稱是Employee,那麼原始檔案應該命名為Employee.java。
  • 如果一個類別定義在某個套件中,那麼package語句應該在原始檔案的首行。
  • 如果原始檔包含import語句,那麼就應該放在package語句和類別定義之間。如果沒有package語句,那麼import語句應該在原始檔中最前面。
  • import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。

类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在访问控制章节介绍。

除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。


Java包

包主要用来对类和接口进行分类。当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类。

Import语句

在Java中,如果给出一个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。Import语句就是用来提供一个合理的路径,使得编译器可以找到某个类。

例如,下面的命令行将会命令编译器载入java_installation/java/io路径下的所有类

import java.io.*;
登入後複製
Employee.java 文件代码:
import java.io.*;
 
public class Employee{
   String name;
   int age;
   String designation;
   double salary;
   // Employee 类的构造器
   public Employee(String name){
      this.name = name;
   }
   // 设置age的值
   public void empAge(int empAge){
      age =  empAge;
   }
   /* 设置designation的值*/
   public void empDesignation(String empDesig){
      designation = empDesig;
   }
   /* 设置salary的值*/
   public void empSalary(double empSalary){
      salary = empSalary;
   }
   /* 打印信息 */
   public void printEmployee(){
      System.out.println("名字:"+ name );
      System.out.println("年龄:" + age );
      System.out.println("职位:" + designation );
      System.out.println("薪水:" + salary);
   }
}
登入後複製

程序都是从main方法开始执行。为了能运行这个程序,必须包含main方法并且创建一个实例对象。

下面给出EmployeeTest类,该类实例化2个 Employee 类的实例,并调用方法设置变量的值。

将下面的代码保存在 EmployeeTest.java文件中。

EmployeeTest.java 文件代码:
import java.io.*;
public class EmployeeTest{
 
   public static void main(String []args){
      /* 使用构造器创建两个对象 */
      Employee empOne = new Employee("RUNOOB1");
      Employee empTwo = new Employee("RUNOOB2");
 
      // 调用这两个对象的成员方法
      empOne.empAge(26);
      empOne.empDesignation("高级程序员");
      empOne.empSalary(1000);
      empOne.printEmployee();
 
      empTwo.empAge(21);
      empTwo.empDesignation("菜鸟程序员");
      empTwo.empSalary(500);
      empTwo.printEmployee();
   }
}
登入後複製

编译这两个文件并且运行 EmployeeTest 类,可以看到如下结果:

$ javac EmployeeTest.java
$ java EmployeeTest 
名字:RUNOOB1
年龄:26
职位:高级程序员
薪水:1000.0
名字:RUNOOB2
年龄:21
职位:菜鸟程序员
薪水:500.0
登入後複製

 相关推荐:

JAVA 入坑教程 | 对象和类

对Java的面对对象编程中对象和引用以及内部类的理解

以上是最新區別Java中類別和物件的方法,趕緊拿走不謝的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1319
25
PHP教程
1269
29
C# 教程
1248
24
公司安全軟件導致應用無法運行?如何排查和解決? 公司安全軟件導致應用無法運行?如何排查和解決? Apr 19, 2025 pm 04:51 PM

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

如何將姓名轉換為數字以實現排序並保持群組中的一致性? 如何將姓名轉換為數字以實現排序並保持群組中的一致性? Apr 19, 2025 pm 11:30 PM

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

如何使用MapStruct簡化系統對接中的字段映射問題? 如何使用MapStruct簡化系統對接中的字段映射問題? Apr 19, 2025 pm 06:21 PM

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

IntelliJ IDEA是如何在不輸出日誌的情況下識別Spring Boot項目的端口號的? IntelliJ IDEA是如何在不輸出日誌的情況下識別Spring Boot項目的端口號的? Apr 19, 2025 pm 11:45 PM

在使用IntelliJIDEAUltimate版本啟動Spring...

如何優雅地獲取實體類變量名構建數據庫查詢條件? 如何優雅地獲取實體類變量名構建數據庫查詢條件? Apr 19, 2025 pm 11:42 PM

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

Java對像如何安全地轉換為數組? Java對像如何安全地轉換為數組? Apr 19, 2025 pm 11:33 PM

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

如何利用Redis緩存方案高效實現產品排行榜列表的需求? 如何利用Redis緩存方案高效實現產品排行榜列表的需求? Apr 19, 2025 pm 11:36 PM

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...

電商平台SKU和SPU數據庫設計:如何兼顧用戶自定義屬性和無屬性商品? 電商平台SKU和SPU數據庫設計:如何兼顧用戶自定義屬性和無屬性商品? Apr 19, 2025 pm 11:27 PM

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...

See all articles