2.17、内部类
内部类:在一个类的内部还有另外一个类。
范例:
class Outer{
private String name = "hellow world!";
class Inner{
public void print(){
System.out.println("name = " + name);
}
}
public void fun(){
new Inner().print(); //打印信息
}
}
内部类的缺点可以看出就是程序的结构混乱
内部类的唯一有点:在于可以方便的访问外部类中的私有成员。
如果要在外部直接使用内部类的实例化对象:
- 外部类.内部类 内部类对象 = 外部类实例.new 内部类实例();
class Outer{
private String name = "hellow world!";
class Inner{
public void print(){
System.out.println("name = " + name);
}
}
}
public class Demo02 {
public static void main(String args[]) {
Outer out = new Outer(); //外部类实例
Outer.Inner in = out.new Inner(); //实例化内部类对象
in.print();
}
}
一个内部类如果使用static关键字声明的话,则此内部类就将成为外部类,可以直接通过外部类.内部类的形式访问。
class Outer{
private static String name = "hellow world!";
static class Inner{
public void print(){
System.out.println("name = " + name);
}
}
}
public class Demo02 {
public static void main(String args[]) {
Outer.Inner in = new Outer.Inner(); //实例化内部类对象
in.print();
}
}
内部类可以在任何的地方使用,例如:在方法中声明。
class Outer{
private String name = "hellow world!";
public void fun(){
class Inner{
public void print(){
System.out.println("name = " + name);
}
}
new Inner().print();
}
}
public class Demo02 {
public static void main(String args[]) {
new Outer().fun();
}
}
在方法中定义的内部类,可以直接访问外部类中的各个成员,但是如果要访问方法中的参数,则在参数上要使用final关键字声明。
class Outer{
private String name = "hellow world!";
public void fun(final int temp){
class Inner{
public void print(){
System.out.println("name = " + name);
System.out.println("temp= " + temp);
}
}
new Inner().print();
}
}
public class Demo02 {
public static void main(String args[]) {
new Outer().fun(30);
}
}
转载请注明来源