日期:2014-05-20  浏览次数:20882 次

在java中类可以嵌套吗?下面这个简单的小程序,为什么Person这个类不能放在TestPerson类里面呢。
public class TestPerson {
public static void main(String[]args){
Person p1=new Person();
Person p2=new Person();
p1.age=-30;
p1.shout();
p2.shout();
}

}
class Person{
int age ;
void shout()
{
System.out.println("oh,my god!my age is"+age);
}
}

------解决方案--------------------
内部类是在一个类的内部嵌套定义的类,它可以是类的成员(成员类),也可以在一个语句块的内部定义(局部类),也可以 作为类的静态成员(静态类),还可以在表达式内部匿名定义(匿名类)。 

内部类有如下特性: 
一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称。名字不能与包含它的类名相同。 
可以使用包含它的类的静态和实例成员变量,也可以使用它所在方法的局部变量。 
可以定义为abstract。 
可以声明为private或protected。 
若被声明为static,就变成了顶层类,不能再使用局部变量。 
若想在Inner Class中声明任何static成员,则该Inner Class必须声明为static


静态内部类可以直接访问外部类的静态成员,但不能访问实例成员,如果访问外部类的实例成员,就必须通过外部类的实例去访问。