內(nèi)部類(lèi)不多什往,就三種扳缕,但是知識(shí)點(diǎn)特別碎,總是把我搞迷糊别威。但我發(fā)現(xiàn)它和變量有些相似躯舔。哎!管它是什么省古?先寫(xiě)下來(lái)吧粥庄,好記性不如爛筆頭么!
局部?jī)?nèi)部類(lèi)
- 是指內(nèi)部類(lèi)定義在方法和作用域內(nèi)
- 其作用域只在方法體內(nèi)部
- 局部?jī)?nèi)部類(lèi)的成員的方法的參數(shù)和局部變量必須是final定義的
- 不能使用private,protected,public 等訪(fǎng)問(wèn)修飾符
代碼示例:
package innerclass;
/**
* 局部?jī)?nèi)部類(lèi)豺妓,是指內(nèi)部類(lèi)定義在方法和作用域內(nèi)
* 其作用域只在方法體內(nèi)部
* 成員的方法的參數(shù)和局部變量必須是final定義的
* 不能使用private,protected,public 等訪(fǎng)問(wèn)修飾符
* @author Administrator
*
*/
public class JuBuClass {
private String name="關(guān)頭請(qǐng)";
//成員的方法的參數(shù)和局部變量必須是final定義的
public ShowCla showName(final int b){
final int a = 10;
//其作用域只在方法體內(nèi)部
//不能使用private,protected,public 等訪(fǎng)問(wèn)修飾符
class Clazz extends ShowCla{
private int num = 400;
public void show(){
System.out.print("jkdf"+b);
}
}
//new Clazz().show();
return new Clazz();
}
public static void main(String[] args){
JuBuClass jubu = new JuBuClass();
jubu.showName(10).show();
}
}
abstract class ShowCla{
public abstract void show();
}
測(cè)試結(jié)果:
jkdf10
成員內(nèi)部類(lèi)
- 如果外部類(lèi)屬性名和內(nèi)部類(lèi)屬性名惜互,我們用外部類(lèi).this來(lái)調(diào)用外部類(lèi)的屬性名
- 內(nèi)部類(lèi)的優(yōu)點(diǎn):可以不用創(chuàng)建對(duì)象去調(diào)用外部類(lèi)的屬性和方法
- 內(nèi)部類(lèi)的創(chuàng)建方式: 外部類(lèi).內(nèi)部類(lèi) 對(duì)象名 = new 外部類(lèi)().new 內(nèi)部類(lèi)()
代碼示例:
package innerclass;
public class School {
private String name="河南";
private int size = 100;
public void outShow(){
Clazz c = new Clazz();
c.show();
}
public class Clazz{
private int n=400;
public void show(){
size = 10;
System.out.println("內(nèi)部show方法"+size);
}
}
public static void main(String[] args){
School s = new School();
Clazz c = s.new Clazz();
s.outShow();
}
}
測(cè)試結(jié)果:
內(nèi)部show方法10
匿名內(nèi)部類(lèi)
由于匿名內(nèi)部類(lèi)沒(méi)有名稱(chēng),所以不能寫(xiě)構(gòu)造方法
匿名內(nèi)部類(lèi)格式new 匿名類(lèi){方法體};
-
匿名內(nèi)部類(lèi)可以繼承和實(shí)現(xiàn)一個(gè)接口
代碼示例:
package innerclass; /** * 由于匿名內(nèi)部類(lèi)沒(méi)有名稱(chēng)科侈,所以不能寫(xiě)構(gòu)造方法 * 匿名內(nèi)部類(lèi)格式new 匿名類(lèi){方法體} * 匿名內(nèi)部類(lèi)可以繼承和實(shí)現(xiàn)一個(gè)借口 * @author Administrator * */ public class WuMing { private String name = "光頭請(qǐng)"; public ShowCla cla(final int num){ return new ShowCla(){ private int size; public void show(){ System.out.println(size+" "+num); } }; } public static void main(String[] args){ WuMing wu = new WuMing(); wu.cla(10).show(); } }
測(cè)試結(jié)果:
0 10
遞歸:
1.有反復(fù)執(zhí)行的過(guò)程(調(diào)用自身)
2.有反復(fù)執(zhí)行過(guò)程的條件(遞歸出口)
//遞歸跟循環(huán)或者算法载佳,運(yùn)行效率低