黑馬程式設計師Java培訓和Android培訓:內部類
看了很多視訊運用到了內部類的知識,想寫點東西給自己總結一下
內部類:在一個類中定義另外一個類.
內部類中對應的成員變數和成員方法 跟外部類對應的成員變數和方法 是不會有衝突的
而且內部類可以訪問外部類的所有成員
當main方法在outer類的外部,但是想要在main方法中用到Inner類 這個時候就需要獲得一個inner類的例項物件 才能呼叫其方法
主要方法是 在outer類中定義一個方法 這個方法可以獲得一個 inner的例項 然後在main函式中呼叫outer的這個獲得例項的方法 ,轉而呼叫內部類的方法
package Test;
class Outer{
private int a=100;
class Inner
{
private int a=50;
void print()
{
int a=30;
System.out.println(a);
System.out.println(this.a);
System.out.println(Outer.this.a);
}
}
void print()
{
Inner p=new Inner();
p.print();
}
Inner getInner()
{
return new Inner();
}
}
public class Test
{
public static void main(String [] args)
{
Outer o=new Outer();
Outer.Inner fi= o.getInner();
fi.print();
}
}
一個內部類想去訪問外部類的成員變數和方法,那麼就先必須有一個外部類的物件
如果將內部類放入方法中的話,那麼內部類就只限於在方法中使用,但是不管巢狀多深,都可以反問外部類的成員
如果內部類放在方法中的話,那麼內部類想訪問方法中的變數,必須把這個變數或者引數 定義為常量 即final型別
如果不需內部類訪問,則不需要將其設定為final型別
當把內部類定義為一個abstract型別時間,那麼就不能直接用內部類去例項化一個物件。可以在Outer類中定義一個從Inner派生出來的類,再例項化
當把Inner定義為static的話,就不能再繼續訪問Outer類的非靜態的成員變數和方法了,非static的內部類不能有靜態的方法
內部類實現介面的例子
package Test;
interface jiekou
{
void print();
}
class Outer{
private int a=100;
class Inner implements jiekou
{
private int a=50;
public void print()
{
int a=30;
System.out.println(a);
System.out.println(this.a);
System.out.println(Outer.this.a);
}
}
Inner getInner()
{
return new Inner();
}
}
public class Test
{
public static void main(String [] args)
{
Outer ou=new Outer();
jiekou k=ou.getInner();
k.print();
}
}
相關文章
- 黑馬程式設計師Java培訓和Android培訓:培訓前奏程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:列舉程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:I/O程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓_IO(二)程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:程式設計基礎程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:物件導向程式設計師JavaAndroid物件
- 黑馬程式設計師Java培訓和Android培訓Java技術二程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:多執行緒程式設計師JavaAndroid執行緒
- 黑馬程式設計師Java培訓和Android培訓_java高新技術(一)程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓Java GUI圖形使用者介面程式設計師JavaAndroidGUI
- Java程式設計師技術培訓需要培訓哪些?Java程式設計師
- 好程式設計師Java培訓Java容器類List和Set分析程式設計師Java
- 好程式設計師Java培訓分享Java程式設計師常用的工具類庫程式設計師Java
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- oracle內部培訓心得Oracle
- 長沙Java培訓:自學Java程式設計有必要報培訓班麼?Java程式設計
- java培訓內容Java
- 好程式設計師Java培訓Java程式設計師必學技術程式設計師Java
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java
- 好程式設計師Java培訓分享Java和HTML的區別?程式設計師JavaHTML
- 程式設計師自學/自我培訓指南程式設計師
- 好程式設計師Java培訓分享maven-概述程式設計師JavaMaven
- Java程式設計師培訓班哪家比較好Java程式設計師
- java培訓教程:什麼是匿名內部類?怎樣建立匿名內部類?Java
- 好程式設計師Java培訓分享Java類載入的過程概述程式設計師Java
- 好程式設計師Java培訓之類的例項化步驟程式設計師Java
- 好程式設計師Java培訓分享int和Integer的區別程式設計師Java
- 好程式設計師Java培訓分享treeset和hashset的區別程式設計師Java
- 好程式設計師Java培訓分享如何快速入門Java程式設計程式設計師Java
- 好程式設計師大資料培訓分享之hive常用內部函式程式設計師大資料Hive函式
- 好程式設計師Java培訓分享Java之反射技術程式設計師Java反射
- 好程式設計師Java培訓分享Java初學者必讀程式設計師Java
- 好程式設計師Java培訓分享Java多執行緒程式設計師Java執行緒
- 好程式設計師Java培訓分享Java包是什麼?程式設計師Java
- 好程式設計師Java培訓分享如何快速入門Java程式設計師Java
- 好程式設計師Java培訓分享BigDecimal的用法程式設計師JavaDecimal
- 好程式設計師Java培訓分享SpringBoot -YAML程式設計師JavaSpring BootYAML
- 好程式設計師Java培訓分享For迴圈詳解程式設計師Java