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();
}
}