上次说到类之中还可以嵌套类,嵌套其中的类就是内部类。内部类大致可分为四类,分别是:成员内部类,局部内部类,匿名内部类和静态内部类。
成员内部类
定义语法
成员内部类是最普通和简单的内部类,即把类定义在一个类之中,如同成员变量一般。
public class 外部类{
public class 内部类{
}
}
代码示例:
public class human {
public human(){
}
public class brain{
public public brain(){
}
public void think(){
System.out.println("正在思考");
}
}
}
brain类就是human类的一个成员内部类。
成员内部类的访问权限也很广,可以用public、protected、默认、private来修饰。这是由于成员内部类就如同一个类的成员变量一样,不像外部类只能由public和默认权限修饰词来修饰。
使用方法
1、内部类中,可以随意使用外部类成员。
2、外部类中,使用内部类成员时需要创建内部类对象。
3、在无关类中调用内部类成员:
a.间接调用,在外部类中的成员方法中创建内部类对象
b.直接调用,需要创建内部类对象:
外部类.内部类 类名= new 外部类().new 内部类();
4、在内部类和外部类有同名成员变量时,会出现隐藏现象,会默认访问内部类成员,此时需要区分时便用到如下格式:
外部类成员变量: 外部类名.this.变量名
内部类成员变量: this.变量名
局部变量: 变量名
成员内部类是依附在外部类存在的,如果需要创建一个内部类对象,必须要先存在一个外部类对象,如上述第3点所说。
代码示例:
public class Javasample {
public static void main(String[] args) {
outter out=new outter();
outter.inner inner1=out.new inner();
//方法1,直接创建内部类对象
outter.inner inner2=out.createinner();
//方法2,调用方法创建内部类对象
}
}
class outter{
public inner inner= null;
public inner createinner(){
//使用方法创建内部类对象
if(inner==null) {
inner inner = new inner();
}
return inner;
}
class inner{
public inner() {
System.out.println("创造了内部类");
}