内部类
奖类写在其他类的内部,可以写在其他类的成员位置和局部位置,这种类就是内部类
内部类的分类
成员内部类:可以使用成员修饰符,public static …
也是个类,可以继承,可以实现接口
调用规则:内部类,可以使用外部类成员,包括私有,外部类要使用内部类的成员,必须建立内部类对象
public class Outer {
private int a = 1;
class Inner{
public void inner(){
System.out.println("内部类方法inner"+a);
}
}
}
public class Test {
public static void main(String[] args) {
/*
依靠外部类对象,找到内部类,通过内部类对象,调用内部类方法
格式:外部类名.内部类名 变量 = new 外部类名().new 内部类对象();
变量.内部类方法
*/
Outer.Inner in = new Outer().new Inner();
in.inner();
}
}
成员内部类的同名变量调用
public class Outer {
int i = 1;
class Inner{
int i = 2;
public void inner(){
int i = 3;
System.out.println(this.i);
}
}
}
public class Test {
public static void main(String[] args) {
Outer.Inner in = new Outer().new Inner();
in.inner(); //输出2
}
}
public class Outer {
int i = 1;
class Inner{
int i = 2;
public void inner(){
int i = 3;
System.out.println(Outer.this.i);
}
}
}
public class Test {
public static void main(String[] args) {
Outer.Inner in = new Outer().new Inner();
in.inner(); //输出1
}
}
局部内部类:将一个类定义在方法中
public class Outer {
public void out(){
class Inner{
public void inner(){
System.out.println("局部内部类的方法");
}
}
Inner in = new Inner();
in.inner();
}
}
public class Test {
public static void main(String[] args) {
new Outer().out();
}
}