先上代码:
A.java
class A{
int i;
class B{
int j;
int funB(){
int result = i + j;
return result;
}
}
}
Test.java
class Test{
public static void main(String args []){
A a = new A();
A.B b = a.new B();
a.i = 3;
b.j = 1;
int result = b.funB();
System.out.println(result);
}
}
编译运行为4
显然,在A类中有个B类,而B类可以直接使用A类中的成员变量:result = i + j;
B就为内部类,如何使用内部类,语法为
先定义一个外部类对象,A a = new A();
定义内部类对象的方法为 外部类名.内部类名 对象名 = 外部类对象.new 内部类名();
你也可以使用这种方法:
例子:A.B b = new A().new B();
方法类似,使用的外部类对象不同。
另外还有一种叫匿名内部类
A.java
interface A{
public void doSomething();
}
B.java
class B{
public void fun(A a){
System.out.println("B类的fun函数");
a.doSomething();
}
}
AImpl.java
class AImpl implements A{
public void doSomething(){
System.out.println("doSomething");
}
}
Test.java
class Test{
public static void main(String args []){
//AImpl al = new AImpl();
//A a = al;
B b = new B();
b.fun(new A(){
public void doSomething(){
System.out.println("匿名内部类");
}
});
}
}
博客里的文章都是自己的学习心得和看法,如有不对,欢迎各位留言指出。谢谢。