定义:内部类就是在一个类中定义一个类,在类A内部定义一个类B,类B就是内部类
访问特点:
内部类可以直接访问外部类的成员,包括私有
外部类访问内部类成员,要创建对象
分类:
成员内部类:在类的成员位置
局部内部类:在类的局部位置
成员内部类:
外界如何创建对象使用?
外部类名.内部类名 对象名=外部类对象.内部类对象
package Experience;
public class Test {
int a=1;
public class Inner{
int b=2;
public void sum(){
System.out.println(a+b);
}
}
public void Output(){
Inner inner=new Inner();
inner.sum();
}
public static void main(String[] args){
Test.Inner test=new Test().new Inner();
test.sum();
}
}
但是,这样又过于繁琐,不容易记忆
所以改换一下思路
在外部类的方法里面创建内部类的对象,然后调用内部类的方法,在测试类创建外部类对象,调用这个外部类的方法,就可以间接调用内部类
package Experience;
public class Test {
int a=1;
public class Inner{
int b=2;
public void sum(){
System.out.println(a+b);
}
}
public void Output(){
Inner inner=new Inner();
inner.sum();
}
public static void main(String[] args){
Test test=new Test();
test.Output();
}
}
局部内部类:
就是在方法内定义的类,外界无法直接调用
该类可以直接访问外部成员,也可以访问方法内的局部变量
该怎么使用局部内部类:
需要在该成员方法的内部创建对象,和内部类在一个方法里,然后调用内部类的方法(相当与必须和内部类在同一个方法里创建对象和调用内部类的方法)
然后在测试类创建外部类对象,调用该成员方法,就可以调用该方法里的内部类和方法
package Experience;
public class Test {
private int a=1;
public void sum(){
int b=2;
class Inner{
public void Sys() {
System.out.println(a + b);
}
}
Inner inner=new Inner();
inner.Sys();
}
public static void main(String[] args){
Test test=new Test();
test.sum();
}
}