class Person{
private String name;
class Heart{
public void jump(){
System.out.println("心臟在跳動");
}
}
}
2.創建內部類實例:
class Person{
private String name;
class Heart{
public void jump(){
System.out.println(name + "心臟在跳動");
}
}
public Heart getHeart(){
//第一種創建內部類對象的方法
return new Heart();
}
}
class Test{
public static void main(String[] args){
Person.Heart inner = new Person().getHeart();//通過第一種方式獲取
Person p = new Person();
Person.Heart = new p.Heart();
}
}
總結
內部類可以訪問外部類的私有屬性
內部類可以體現包含關係
二、靜態內部類
1.代碼:
class Outer{
static class Inner{
public void test(){
System.out.pintln("這是測試");
}
}
}
2.靜態內部類實例化:
class Test{
public static void main(String[] args){
new Outer.Inner().test();//訪問了內部類的test()方法
}
}
靜態內部類只能訪問靜態屬性
三、方法裏的內部類
1.代碼:
class Outer{
public void test(final int age){
class Inner{
public void innerTest(){
System.out.println(age);
}
}
new Inner().innerTest();
}
}
class Test{
public static void main(String[] args){
new Outer().test();
}
}
總結:
不可能從外部去調用方法中的內部類,只能通過在方法裏調用這個方法裏的內部類
內部類接收外部類方法的形參時必須定義爲final,但是在jdk1.7以後就可以不用寫final
四、匿名內部類
1.代碼:
interface AA{
void test();
}
Class Test{
public static void main(String[] args){
new AA(){
public void test(){
System.out.println("我在測試匿名內部類");
}
}.test();
}
}