1、非静态内部类
定义内部类很简单,只要把一个类放在另一个类内部定义即可。public class OuterClass
{
//此处可以定义内部类
}
注意:同一个java源文件定义了多个类,它们之间是相互独立的,那种情况不是内部类。
内部类做为其外部类的成员,因此可以使用任意访问控制符如private、protected和public修饰。
外部类的上一级程序单元是包,所以它只有2个作用域:同一个包和任何位置。因此只需两种访问权限:包访问权限和公开访问权限。正好对应省略访问控制符和public访问控制符。省略访问控制符是包访问权限,即同一包中的其他类可访问省略访问控制符的成员。因此,如果一一个外部类不使用任何访问控制符修饰,则只能被同一一个包中其他类访问。而内部类的_上一级程序单元是外部类,它就具有四个作用域:同一个类、同一个包、父子类和任何位置,因此可以使用四种访问控制权限。
下面代码定义了一个Man类,Man类中定义了一个内部类Speaker。外部类中的Say方法会创建内部类对象,并且调用内部类对象的Say方法。如果外部类属性、内部类属性与内部类里方法的局部变量同名,则可通过使用this、外部类类名.this作为限定来区分。具本看一下如下代码,public class Man
{
private int age;
private String name=”man”;
public Man(){ }
public Man(int age)
{
this.age=age;
}
//定义一个非静态内部