1. 程式人生 > 實用技巧 >Java學習之final與匿名內部類

Java學習之final與匿名內部類

Java學習之final與匿名內部類

0x00 前言

續上幾篇文章,得知子類繼承父類後是可以在父類的基礎上進行改寫的,那麼在程式中有些東西可能是不能讓我們給輕易給改動的,那麼Java給提供了final關鍵字。

0x01 final使用

final:是不可改變的,可以用來修飾類、方法、變數。

修飾類格式:

final class Final {

}

修飾方法格式:

    public final void abc(){
        System.out.println("一個不可重寫的的方法");
    }

修飾變數:

final int a =1;

被該關鍵字修飾的類不能被繼承

被該關鍵字修飾的方法不能被重寫

被該變數修飾的變數,不能被重新賦值。

被final修飾的常量名稱,一般都有書寫規範,所有字母都大寫

0x02 許可權修飾符

前面使用到最多的可能就是pubilc和private,在java中提供了四種訪問許可權,使用不同的訪問許可權修飾時,被修飾的內容有不同的訪問許可權。

public 公共的
prorected 受保護的
default  預設的
private  私有的

這裡可以看到public是最大的許可權,而private是最小的。

如果不加修飾符,預設是default。

0x03 內部類

格式:

public class Final{
    public class abc{
        
        
    }
}

內部類訪問的特點:
內部類可以直接訪問外部類的成員,包括私有方法。外部類要訪問內部類的成員,必須建立內部類的物件。

建立內部類物件的格式:

外部類名.內部型別 物件名 = new 外部型別().new 內部型別();

定義的方式和例項化物件的寫法類似。

內部類仍然是一個獨立的類,在編譯之後會內部類會被編譯成獨立的.class檔案,但是前面冠以外部類的類名
和$符號 。

匿名內部類

匿名內部類是內部類的簡化寫法。他的本質是一個帶有具體實現父類或父類介面的匿名子物件。

在程式碼中比較常用的可能就是匿名內部類。
在使用到一個介面的時候需要做的幾步操作,

1.定義實現類

2.重寫父介面的方法

3.例項化實現類物件

4.呼叫重寫後的方法

如果是隻呼叫一次的話,那麼就可以使用到匿名內部類。

前提條件是匿名內部類必須繼承一個父類或者是父介面。

new 父類或者介面名(){
    //重寫方法
    pubilc void method(){
        ...
    }
}

匿名內部類程式碼實現:

這裡來定義一個父類:

public abstract class Fu {
    public abstract void fly();
    
}



main方法程式碼:

public class ZiMain {
    public static void main(String[] args) {

        Fu f = new Fu() {
            @Override
            public void fly() {
                System.out.println("會飛");
            }
        };
        f.fly();
    }
}

0x04 結尾

一篇文章水完了,在裡面用到比較多的可能就是匿名內部類了,如多執行緒建立的時候,因為執行緒不能被多次呼叫,可以直接使用匿名內部類進行建立。