Java語言——類
在Java語言中經常提到類和物件,實質上可以將類看作是物件的載體,它定義了物件所具有的功能。物件導向程式設計具有以下特點:封裝性、繼承性和多型性。
一、類
1.成員變數
在Java中物件的屬性也稱為成員變數。成員變數宣告在類體中,區域性變數宣告在方法體中。示例程式碼如下:
package com.example;
public class Book {
private String name;//定義一個String型的成員變數
public String getName(){//定義一個getName()方法
int id=0;//區域性變數
setName("java");//呼叫類中其他方法
return id+this.name;//設定方法返回值
}
private void setName(String name){
this.name=name;
}
public Book getBook(){
return this;//返回Book類引用
}
}
2.成員方法
在Java語言中使用成員方法對應於類物件的行為。上述程式碼為例,Book類中包含了getName()和setName()兩個方法。定義成員方法的語法格式如下:
許可權修飾符 返回值型別 方法名(引數型別 引數名){
...//方法體
return 返回值;
}
一個成員方法可以有引數,這個引數可以是物件也可以是基本資料型別的變數,同時成員方法有返回值和不返回任何值的選擇,如果方法需要返回值可以在方法體中使用return關鍵字,使用這個關鍵字後,方法的執行將被終止。在成員方法中可以呼叫其他成員方法和類成員變數。如果一個方法中含有與成員變數同名的區域性變數,則方法中對這個變數的訪問以區域性變數進行。
3.許可權修飾符
Java中的許可權修飾符主要包括private、public和protected,這些修飾符控制著對類和類的成員變數以及成員方法的訪問。如下圖所示:
如果一個類的成員變數或成員方法被修飾為private,則該成員變數只能在本類中被使用,在子類中是不可見的,並且對其他包的類也是不可見的。如果將類的成員變數和成員方法的訪問許可權設定為public,那麼除了可以在本類使用這些資料之外,還可以在子類和其他包的類中使用。如果一個類的訪問許可權被設定為private,這個類將隱藏其內的所有資料,以免使用者直接訪問它。
4.區域性變數
如果在成員方法中定義一個變數,那麼這個變數被稱為區域性變數。如下程式碼所示,getName()方法中的id變數即為區域性變數。實際上方法中的形參也可以作為一個區域性變數,如在定義setName(String name)方法時,String name這個形參就被看作是區域性變數。區域性變數是在方法被執行時建立,在方法執行結束時銷燬。區域性變數在使用時必須進行賦值操作或被初始化,否則會出現編譯錯誤。
public String getName(){//定義一個getName()方法
int id=0;//區域性變數
setName("java");//呼叫類中其他方法
return id+this.name;//設定方法返回值
}
5.區域性變數的有效範圍
區域性變數的有效範圍又可以稱為變數的作用域,區域性變數的有效範圍從該變數的宣告開始到該變數的結束為止。如下圖所示:
6.this關鍵字
private void setName(String name){
this.name=name;
}
在上述程式碼中,成員變數與setName()方法中的形參的名稱相同,都為name。在Java語言中,規定使用this關鍵字來代表本類物件的引用,this關鍵字被隱式的用於引用物件的成員變數和方法。this可以呼叫成員變數和成員方法,但在Java語言中最常規的呼叫方式是使用“物件.成員變數”或“物件.成員方法”進行呼叫。
二、類的構造方法
構造方法是一個與類同名的方法,物件的建立就是通過構造方法完成的。每當類例項化一個物件時,類都會自動呼叫構造方法。構造方法的特點如下:
(1)構造方法沒有返回值。
(2)構造方法的名稱要與本類的名稱相同。
構造方法的定義語法格式如下:
public book(){
//...構造方法體
}
public:構造方法修飾符。
book:構造方法的名稱。
在構造方法中可以為成員變數賦值,這樣當例項化一個本類物件時,相應的成員變數也將被賦值。如果類中沒有明確定義構造方法,編譯器會自動建立一個不帶引數的預設構造方法。
三、靜態變數、常量和方法
由static修飾的變數、常量和方法被稱作靜態變數、常量和方法。被宣告為static的變數、常量和方法被稱為靜態成員。靜態成員屬於類所有,區別於個別物件,可以在本類或其他類使用類名和“.”運算子呼叫靜態成員。語法如下:
類名.靜態類成員
示例程式碼如下:
package com.example;
public class StaticTest {
static double PI=3.1415;//在類中定義靜態常量
static int id;//在類中定義靜態變數
public static void method1(){//在類中定義靜態方法
//doSomething
}
public void method2(){//在類中定義非靜態方法
System.out.println(StaticTest.PI);//呼叫靜態常量
System.out.println(StaticTest.id);//呼叫靜態變數
StaticTest.method1();//呼叫靜態方法
}
}
在Java語言中對靜態方法有兩點規定:
(1)在靜態方法中不可以使用this關鍵字。
(2)在靜態方法中不可以直接呼叫非靜態方法。
四、類的主方法
主方法是類的入口點,它定義了程式從何處開始;主方法提供對程式流向的控制,Java編譯器通過主方法來執行程式。主方法的語法如下:
public static void main(String[] args){
//方法體
}
主方法具有以下特性:
(1)主方法是靜態的,所以如要直接在主方法中呼叫其他方法,那該方法必須也是靜態的。
(2)主方法沒有返回值。
(3)主方法的形參為陣列。其中args[0]~args[n]分別代表程式的第一個引數到第n個引數,可以使用args.length獲取引數的個數。
學習是一件很快樂的事,這種快樂來自於你的思考。完成一項學習任務固然重要,但更重要的是在完成的過程中學到了什麼,掌握了什麼,遇到一些什麼問題,為什麼會出現這種問題,根源是什麼,都有哪些解決方案,什麼樣的情況適合這個方案。只有在不斷的思考,你的能力才會有所提升!
相關文章
- java語言邏輯類、引數類和字元類Java字元
- 語言小知識-Java ArrayList類 深度解析Java
- 語言小知識-Java HashMap類 深度解析JavaHashMap
- Java語言程式設計——物件和類09Java程式設計物件
- Java語言class類用法及泛化(詳解)Java
- SQL語言分類SQL
- Java 語言是強型別語言語言(轉)Java型別
- 《自然》證實:計算機語言更類似人類語言計算機
- java語言屬於哪種語言Java
- Java語言概述Java
- java語言學習Java
- Java語言規範Java
- 計算機程式語言的分類,解釋型語言、編譯型語言、指令碼語言的關係計算機編譯指令碼
- Java Platform SE 8(Java™程式語言)JavaPlatform
- Java開發之路—java語言概述Java
- Java語言基礎(一)Java
- Easy Translator語言翻譯類工具R語言
- Java語言與C++語言的差異總結JavaC++
- 《Java8函數語言程式設計》讀書筆記---類庫Java函數程式設計筆記
- Java (計算機程式語言)Java計算機
- Java語言編碼規範Java
- JAVA語言程式設計思想Java程式設計
- C語言呼叫 Java(Linux)C語言JavaLinux
- JAVA JNI 呼叫C語言 DemoJavaC語言
- C語言 JNI 呼叫JAVA DemoC語言Java
- java語言基礎學習Java
- 7.27----學習JAVA語言Java
- 8.17----學習JAVA語言Java
- Java語言程式設計—迴圈語句Java程式設計
- Java經典類庫-Guava中的函數語言程式設計講解JavaGuava函數程式設計
- Java和Go語言二選一,選擇哪門語言好?JavaGo
- Java語言入門:該如何學習JavaJava
- Java 語法介紹(一):Java語言的基本組成(轉)Java
- 程式語言對比手冊-縱向版[-類-]
- C語言: 分類統計字元個數C語言字元
- GO語言字串有哪些?詳細分類Go字串
- 各類程式語言的Hello World寫法
- 11大類程式語言功能比較表