WEB开发网
开发学院手机开发Android 开发 Android应用开发之Java基础篇——内部类 阅读

Android应用开发之Java基础篇——内部类

 2010-10-14 06:19:00 来源:本站整理   
核心提示:我们再看看内部类的一些特点:1、内部类可以定义类的private访问权限,外部类不可以定义private,Android应用开发之Java基础篇——内部类(2),2、内部类具有外部类的所有访问权限,可以访问外部类的所有变量,请参考《Java编程思想》,这本书在我的电子书中有,包括private,你可能会问内部类怎么能做

我们再看看内部类的一些特点:

1、内部类可以定义类的private访问权限,外部类不可以定义private。

2、内部类具有外部类的所有访问权限,可以访问外部类的所有变量,包括private。你可能会问内部类怎么能做到这一点儿呢?答案是在创建内部类的时候,保存了一个指向外部类的引用,当访问变量时首先在外部类内部找,如果找不到,则用外部类的引用到外部类中查找。

3、一般情况下,引用外部类中变量和引用内部类自己变量一样,这叫隐式引用。当然在特殊情况下需要显示的指明引用内部类的变量,还是引用内部类自己变量。一个例子就是内部类和外部类定义了相同名字的变量,假如不指明将会发生混淆。例如:

public class TestInner

{

int i = 1;

class Inner

{

int i = 0;

public int getOuter()

{

return TestInner.this.i;

}

public int getInner()

{

return this.i;

}

}

public Inner getInner()

{

return new Inner();

}

public static void main(String[] argv)

{

TestInner outer = new TestInner();

TestInner.Inner inner = outer.getInner();

System.out.println("Out class = " + inner.getOuter() + " ");

System.out.println("Inner class = " + inner.getInner() + " ");

}

}

通过上例我们可以看出,如果引用内部类自己的变量可以通过“this.变量”来引用,如果你需要引用外部类的变量,必须要“外部类名.this.变量”来引用。

4、内部类可以定义成匿名内部类。这样的话,因为其没有类名,所以访问这个内部类只能把它向上转型成基类的类型。举个Android类子:

final Button button = (Button) findViewById(R.id.button_id);

button.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

// Perform action on click

}

});

可以看出我们定义了一个View.OnClickListener的内部类,生成一个对象,并把该对象向上转型成 View.OnClickListener类型注册给Button对象。Button对象调用View.OnClickListener接口来访问这个匿名内部类对象。

5、内部类可以定义在类的任意作用域。内部类可以定义在类域中,类方法中等等。

以上Java内部类的知识,一般足够应付Android开发中的内部类的问题了。如果你想更加深入的学习内部类,请参考《Java编程思想》,这本书在我的电子书中有,可以下载。

上一页  1 2 

Tags:Android 应用开发 Java

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接