java内部类

来源:互联网 发布:ug8编程教学视频 编辑:程序博客网 时间:2024/06/12 09:09

定义:定义在另外一个类内部中的类称为内部类。

访问特点:

内部类可以直接访问外部类的所有成员(包括私有成员);

而外部类要访问内部类成员需要建立内部类对象:

class Outer

{

private int num = 14;

class Inner

{

void show ()

{

System.out.println("num=" +num);

}

}

public void method()

{

Inner in = new Inner();

in.show;

}

}

1、直接访问内部类的格式

public class InnerClassDemo

{

public static void main(String[] args)

{

//先创建外部类对象再用其创建内部类对象

Outer.Inner in = new Outer().new Inner();

in.show();

//如果内部类是静态的(static class Inner{....}),相当于一个外部类

//Outer.Inner in = new Outer.Inner();

//如果内部类是静态的,成员是静态的(static void show(){....})

//Outer.Inner.show();

}

}

2.如果内部类中定义了静态的成员,那么该内部类也必须是静态的。

3.内部类访问成员变量的顺序

class Outer

{

int num = 3;

class Inner

{

int num = 4;

void show ()

{

int num = 5;

Systenm.out,println("show run ......." +num); //输出show run......5

Systenm.out,println("show run ......." +this.num); //输出show run......4

Systenm.out,println("show run ......." +Outer.this.num); //输出show run......3

}

}

}

4.内部类在局部位置上只能访问局部中的被Final修饰的变量:x 要final修饰。



5.匿名内部类:内部类的简写格式,其实就是一个匿名子类对象

前提条件:1.必须能继承或者实现一个外部类接口

格式:new 父类/接口(){子类内容}

abstract class Demo

{

abstract void show();

}

6.匿名内部类的应用:

1.当函数的参数是接口类型,且接口中的方法不超过三个




7.匿名内部类向上转型后不能再使用特有的方法

obj.show报错。

0 0