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.自定義資料型別的使用:
類作為方法引數時,說明要向方法中傳入該類的物件
類作為方法返回值時,說明該方法要返回一個該類的物件。
抽象類作為方法引數時,說明要傳入一個實現抽象類所有抽象方法的子類物件。
抽象類作為方法返回值時,說明需要返回一個實現抽象類所有抽象方法的子類物件。
介面作為方法引數時,說明該方法要傳入一個介面實現類物件。