内部类 ; 匿名内部类
class A{
int i ;
class B{
int j ;
int funB(){
int result = i+j ; //相当于 result = A.this.i + this.j
return result ;
}
}
}
/*
如果内部类和外部类成员变量冲突怎么办?
就近原则
*/
class Test{
public static void main(String args []){
A a = new A() ;
A.B b = new A().new B(); // 也可以 A.B b = new a.new B();
A.B c = a.new B();
a.i = 1 ;
c.j = 3 ;
System.out.println(c.funB());
}
}
匿名内部类
interface A{
public void doSomeThing();
}
class AImpl implements A{
public void doSomeThing(){
System.out.println("AImpl的调用");
}
}
class B{
void fun(A a){
System.out.println("B类中的方法");
a.doSomeThing();
}
}
public class Test{
public static void main(String args []){
AImpl a_imp = new AImpl();
A a = a_imp ; //向上转型
B b = new B();
b.fun(a);
//下面是匿名类
B b_ano = new B();
b_ano.fun(new A(){
public void doSomeThing(){
System.out.println("--------\n匿名内部类");
}
});
}
}
/*
匿名内部类:
1.B类中的方法以接口为其参数
2.没有名字的类,且在Test内部
3.new 接口(){实现接口};
*/