内部类的基本定义
/* 在方法中定义内部类
在方法中定义的内部类不能直接访问方法中的参数,如果方法中的参数一套想被内部类访问,在参数前必须加上final关键字 */
//在方法中定义内部类
在类内部可以定义成员变量与方法,而且在类内部也可以定义另一个类。
如果在类outer的内部在定义一个类Inner,此时类Inner就称为内部类,而类Out则称为外部类。
内部类可以声明public或者private。
当内部类声明称为Public 或private时,对其访问的限制与成员变量和成员关系相同。
内部类的声明格式:
class Outer{//定义外部类
private String info = "你好Java";//定义外部类属性--私有
class Inner {//定义内部类
public void print(){//定义内部类方法
System.out.println(info);//直接访问外部类私有属性
}
};
public void fun(){//定义方法
new Inner().print();//通过内部类对象调用方法
}
}
public class ClassInnerClassDemo02{
public static void main(String[] args){
new Outer().fun();//调用外部类的fun()方法
}
}
使用static可以声明属性或方法,而使用static也可以声明内部类,
用static声明的内部类变成了外部类,但是sattic声明的内部类不能访问非Static的外部类属性
class Outer03{
private static String info = "你好 Java";
static class Inner{//用Static声明内部类为外部类
public void print(){
System.out.println(info);
}
};
}
public class InnerClassDemo03{
public static void main(String[] args){
new Outer03.Inner().print();//访问内部类
}
}
/* 在方法中定义内部类
在方法中定义的内部类不能直接访问方法中的参数,如果方法中的参数一套想被内部类访问,在参数前必须加上final关键字 */
//在方法中定义内部类
class Outer05{//定义外部类
private String info = "你好Java";
public void fun(final int temp){ //参数要被访问必须用final声明
class Inner{//在方法中定义内部类
public void print(){
System.out.println("类中的属性:" + info);
System.out.println("方法中的参数:" + temp);
}
};
new Inner().print();
}
}
public class InnerClassDemo05{
public static void main(String[] args){
new Outer05().fun(30);//调用外部类方法
}
}