首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JAVA语法之-内部类

2012-11-03 
JAVA语法之----内部类一、内部类的定义放在一个类的内部的类我们就叫内部类.二、作用与特点1、内部了可以很好

JAVA语法之----内部类
一、内部类的定义
放在一个类的内部的类我们就叫内部类.

二、作用与特点
1、内部了可以很好的实现隐藏
一般的非内部类,是不允许有private与protected权限的,但内部类可以
2、可以实现多重继承
3、内部类分为成员内部类、静态嵌套类、方法内部类、匿名内部类。
几种内部类的共性:
A、内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。
B、内部类用户其宿主的所有元素的访问权限

以下我们会对如下几个问题进行分析,另贴出相应的代码
1、分析内部类是否可以直接被创建(实例化)?
2、内部类外部类成员的访问权限?
3、匿名内部类

通过这个例子我们来熟悉内部类,并说明内部类无法直接被创建,必须通过其宿主来进行实例化。


通过该例子可以看到
内部类拥有外部类成员,以及外部类的所有方法的访问权限。
外部类的静态方法与其他外部访问内部类的权限一样,非静态方法拥有内部类成员的所有访问权限

3、匿名内部类,引用自http://topic.csdn.net/u/20080728/20/d60f719a-c103-44b8-8d0c-bc1c818b768a.html
匿名内部类没有名字,所以我们无从给它指定构造方法(构造方法必须和类名同名)但是匿名内部类可以通过直接调用父类的构造方法实现初始化
例子说明一切
public class Main {    public static void main(String[] args) {        InnerTest inner = new InnerTest();        Test t = inner.get(3);        System.out.println(t.getI());    }}class Test {  //超类    private int i;    public Test(int i) {        this.i = i;    }    public int getI() {        return i;    }}class InnerTest {  //用于内部类的测试    public Test get(int x) {        return new Test(x) {  //创建匿名内部类,调用父类的构造方法            @Override            public int getI() {                return super.getI() * 10;            }        };    }}

热点排行