能讲解 一下 什么是内部类吗? 讲详细点好嘛..比如它有什么作用..有什么特性..什么时候用...如何用等....附加 例子最好.. 看过 一些书 但是看不明白..不是很通俗易懂
解决方案 »
- 有关link的问题
- jsp问题
- java中引用参数(类似C#中的ref )是怎么声明的?
- RMI传输对象时,对象的方法如何处理?
- 我的WebLogic Server 6.1启动成功了吗??!!急 在线等待!!
- 很菜的问题......关于APPLET
- 请问什么是函数的超载模式?
- 有那位朋友看过Java2核心技术中的自定义布局管理器,在其中方法preferredLayoutSize的实现是怎样的?看不明白,高手解释一下
- 求JAVA高性能数据传送方案
- Eception in thread "main" java.lang.ArrayIndexOutOfBoundsException
- 寻求公司实习,请网友帮忙!
- rs.getString(1)取得mssql数据库表字段出错,字段类型nvarchar
而外围类也可以访问内部类的成员变量和方法.如果内部类只在方法中使用,就可以把内部类定义在方法中,其作用域就是这个方法块中,如果内部类用到方法的局部变量,则该局部变量就要声明为final如果内部类只使用一次,就可以把内部类声明为匿名内部类.由于匿名内部类没有名字,也就没有构造方法.另外如果定义的一个类名比较常见,如:Double.为了避免冲突,可以将其定义为一个static内部类.如:Point2D.Double在学awt和Swing的时候回大量碰到内部类,到那时自然就明白了.还有要说的是,虚拟机对待内部类和普通类是一样的.之所以内部类可以访问其外围类是因为编译器将外围类对象的引用隐式传递给了内部类,而且还隐式构造了对外围类private成员和方法的访问方法.
class b{ //内部类 :)
}
static class c{ //静态内部类,(嵌套类)
}
void f(){
class d(){
}
if(true){
class e(){
}
} new d(){ //匿名类
void f(){
}
}
}
}
.......
开个玩笑。
class a{
class b{ //内部类 :)
}
static class c{ //静态内部类,(嵌套类)
}
void f(){
class d{
}
if(true){
class e{
}
} new d(){ //匿名类
void f(){
}
}
}
}
// Returning a handle to an inner class
package c07.parcel3;abstract class Contents {
abstract public int value();
}interface Destination {
String readLabel();
}public class Parcel3 {
private class PContents extends Contents {
private int i = 11;
public int value() { return i; }
}
protected class PDestination
implements Destination {
private String label;
private PDestination(String whereTo) {
label = whereTo;
}
public String readLabel() { return label; }
}
public Destination dest(String s) {
return new PDestination(s);
}
public Contents cont() {
return new PContents();
}
}class Test {
public static void main(String[] args) {
Parcel3 p = new Parcel3();
Contents c = p.cont();///////////////////////////////////////////////////////////
Destination d = p.dest("Tanzania");
// Illegal -- can't access private class:
//! Parcel3.PContents c = p.new PContents();
}
} ///:~