1. 程式人生 > >javaSE_day8_構造方法_super關鍵字_final關鍵字_static關鍵字_內部類_訪問許可權和修飾符_程式碼塊_自定義資料型別

javaSE_day8_構造方法_super關鍵字_final關鍵字_static關鍵字_內部類_訪問許可權和修飾符_程式碼塊_自定義資料型別

1.構造方法

作用:用來給類的成員進行初始化操作

定義格式:許可權  方法名(引數列表){ ... } //注意:方法的名字必須和類名完全一致,構造方法不允許寫返回值型別,void也不能寫

構造方法在什麼時候執行呢:在new物件的時候,自動執行,且只執行一次,其他普通方法要呼叫才能執行

每個class必須擁有構造方法,構造方法不寫也有。如果自己手寫了構造方法,編譯的時候就不會自動新增構造方法了。

2.super關鍵字

super()呼叫的是父類的空參構造

super(引數)呼叫的是父類的有參構造方法

子類中所有的構造方法的第一行有預設的隱式super()語句

3.final關鍵字

final是最終的意思,不可變,可以用來修飾類,類的成員,以及區域性變數

final修飾類:不可被繼承,但可以繼承其他類

final修飾的方法:不可被覆蓋,但父類中沒有被final修飾的方法,子類覆蓋後可以加final

final修飾的變數:為常量,這些常量只能賦值一次

4.static關鍵字(實現物件的共享資料)

static修飾成員變數:屬於類,而不屬於這個類中的某個物件

                                 多個物件在訪問或修改static修飾的成員變數時,其中一個物件將static成員變數值進行了修改,其他物件中                                   的static成員變數值跟著改變,即多個物件共享同一個static成員變數

成員變數加static修飾的應用場景:對個物件之間有沒有共性的資料

static修飾成員方法:跟著變數走,如果方法沒呼叫過非靜態成員,將方法定義為靜態

static修飾的成員的訪問方式:類名.靜態成員方法名           類名.靜態成員變數名

在同一個類中,靜態成員只能訪問靜態成員

定義靜態常量:public  static   final  資料型別  變數名=變數值;     //變數名全部大寫,多個單詞使用下劃線連線

使用靜態成員:不需要建立物件,直接類名.靜態常量(或者靜態方法)

注意:介面中的每個成員變數都預設使用public static final修飾。

           所有介面中的成員變數已是靜態常量,由於介面沒有構造方法,所以必須顯示賦值。可以直接用介面名訪問

5.內部類

概述:將類寫在其他類的內部,可以寫在其他類的成員位置和區域性位置,這時寫在其他類內部的類就稱為內部類。其他類也稱為外部類。

什麼時候使用內部類:在描述事物時,若一個事物內部還包含其他可能包含的事物,比如在描述汽車時,汽車中還包含這發動機,這時發動機就可以使用內部類來描述。

內部類的分類:內部類分為成員內部類與區域性內部類。

成員內部類

定義格式:

class 外部類 {

修飾符 class 內部類 {

//其他程式碼

}

}

訪問方式

外部類名.內部類名 變數名 = new 外部類名().new 內部類名();

區域性內部類,定義在外部類方法中的區域性位置

定義格式

class 外部類 {

修飾符 返回值型別 方法名(引數) {

class 內部類 {

//其他程式碼

}

}

}

訪問方式

在外部類方法中,建立內部類物件,進行訪問

6.訪問許可權

 

7.修飾符的使用

常用來修飾類、方法、變數的修飾符如下:

public 許可權修飾符,公共訪問, 類,方法,成員變數

protected 許可權修飾符,受保護訪問, 方法,成員變數

預設什麼也不寫 也是一種許可權修飾符,預設訪問, 類,方法,成員變數

private 許可權修飾符,私有訪問, 方法,成員變數

static 靜態修飾符  方法,成員變數

final 最終修飾符   類,方法,成員變數,區域性變數

abstract 抽象修飾符  類 ,方法

 

我們編寫程式時,許可權修飾符一般放於所有修飾符之前,不同的許可權修飾符不能同時使用;

同時,abstract與private不能同時使用;

同時,abstract與static不能同時使用;

同時,abstract與final不能同時使用。

修飾能夠使用的修飾符:

修飾類只能使用public、預設的、final、abstract關鍵字

使用最多的是 public關鍵字

public class Demo {} //最常用的方式

class Demo2{}

public final class Demo3{}

public abstract class Demo4{}

修飾成員變數能夠使用的修飾符:

public : 公共的

protected : 受保護的

: 預設的

private :私有的

final : 最終的

static : 靜態的

使用最多的是 private

public int count = 100;

protected int count2 = 100;

int count3 = 100;

private int count4 = 100; //最常用的方式

public final int count5 = 100;

public static int count6 = 100;

修飾構造方法能夠使用的修飾符:

public : 公共的

protected : 受保護的

: 預設的

private :私有的

使用最多的是 public

public Demo(){} //最常用的方式

protected Demo(){}

Demo(){}

private Demo(){}

修飾成員方法能夠使用的修飾符:

public : 公共的

protected : 受保護的

: 預設的

private :私有的

final : 最終的

static : 靜態的

abstract : 抽象的

使用最多的是 public

public void method1(){}//最常用的方式

protected void method2(){}

void method3(){}

private void method4(){}

public final void method5(){}

public static void method6(){}//最常用的方式

public abstract void method7();//最常用的方式

 

8.程式碼塊

區域性程式碼塊是定義在方法或語句中

特點:

以”{}”劃定的程式碼區域,此時只需要關注作用域的不同即可

方法和類都是以程式碼塊的方式劃定邊界的

 

構造程式碼塊是定義在類中成員位置的程式碼塊

特點:

優先於構造方法執行,構造程式碼塊用於執行所有物件均需要的初始化動作

每建立一個物件均會執行一次構造程式碼塊。

 

靜態程式碼塊是定義在成員位置,使用static修飾的程式碼塊。

特點:

它優先於主方法執行、優先於構造程式碼塊執行,當以任意形式第一次使用到該類時執行。

該類不管建立多少物件,靜態程式碼塊只執行一次。

可用於給靜態變數賦值,用來給類進行初始化。

9.自定義資料型別的使用:

類作為方法引數時,說明要向方法中傳入該類的物件

類作為方法返回值時,說明該方法要返回一個該類的物件。

抽象類作為方法引數時,說明要傳入一個實現抽象類所有抽象方法的子類物件。

抽象類作為方法返回值時,說明需要返回一個實現抽象類所有抽象方法的子類物件。

介面作為方法引數時,說明該方法要傳入一個介面實現類物件。