知識點:
介面、抽象類、匿名內部類之間的關係。
具體內容:
為什麼需要存在匿名內部類。觀察如下**:
package 比較器;
inte***ce message
package 比較器;
public class messageimpl implements message
}package 比較器;
public class testdemo
public static void fun(message msg)
}
正常的規律就是乙個介面或則抽象類需要有子類,子類要覆寫所有的抽象方法。
當現在的messageimpl子類只需要使用唯一一次時,那麼再整乙個類就比較浪費,至少浪費了乙個messageimpl名字.所以這個時候就可以採用匿名內部類的方式進行**的簡化.
package 比較器;
public class testdemo
public static void fun(message msg)
}package 比較器;
public class testdemo
});} public static void fun(message msg)
}
匿名內部類:
fun(new message()
});相當與它直接把messageimpl類名字去掉,直接放到了這裡,沒了名字自然就匿名了,在方法裡面可能就內部了把。
使用匿名內部類有乙個前提:必須基於介面或則抽象類,因為介面和抽象類都是要覆寫方法的嘛,這個很好理解。
但是需要強調的是,匿名內部類如果定義在了方法裡面,方法的引數或則是變數要被匿名內部類所訪問,那麼必須加上final關鍵字。此要求在jdk1.8被要求改變。
總結:作用就是幫助使用者減少了類的定義。
內部類,匿名內部類
內部類 概念 自己想到的 內部類是一種可以直接訪問外部類的一類事物 內部類訪問外部類中的成員,包括私有。之所以可以訪問外部類的成員,是因為內部類持有了外部類的乙個引用,格式為 outer.this.x 外部類訪問內部類成員,需要宣告內部類的物件。其他類訪問內部類方法 當內部類處在成員變數的位置時,就...
內部類 匿名內部類
把類定義在其他類的內部,這個類就叫內部類。內部類分為 成員內部類 區域性內部類。內部類訪問特點 內部類可以直接訪問外部類的成員,包括私有。外部類訪問內部類的成員,必須建立物件。區域性內部類是定義在乙個方法或者乙個作用域裡面的類。public class outer 在區域性位置建立內部類物件,調內部...
內部類 匿名內部類
package org.lgy.study.innerclass public class anonymoustest public static void main string args public string getname public double getprice inte ce p...