- 定义格式:
public class 类名{
修饰符 class 类名{
}
}
- 内部类可以直接访问外部类的成员,包括私有成员。
- 外部类要访问内部类成员需定义对象。
2.成员内部类
成员内部类创建对象的格式:
(仅针对public修饰的内部类)
外部类类名.内部类类名 对象名 = new 外部类对象.内部类对象;
//实例
OUT.IN i = new OUT().new IN();
但是内部类的目的主要是隐藏类,所以大多用private修饰,此时上面的定义方法则无法访问。此时应该用下面的访问形式:
//定义外部类和内部类
public class Out {
private int age = 10 ;
private class In{
public void show()
{
System.out.println("内部类被调用");
}
}
public void mt()
{
In i = new In();
i.show();
}
}
//测试类:
public class demo {
public static void main(String[] args) {
Out o = new Out();
o.mt();
}
}
3.局部内部类
定义在方法里的内部类:
public void mt()
{
class In{
public void show()
{
System.out.println("内部类被调用");
}
}
In i = new In();
i.show();
}
4.匿名内部类
匿名内部类本质是对象。依然需要在方法中定义。
定义格式:
(类/接口 对象名 = )new 类/接口(){};//记得分号
//接口
public interface IN {
void show();
}
//外部类和匿名内部类的定义和两种调用
public class OUT {
public void mt()
{
new IN(){
@Override
public void show() {
System.out.println("第一种输出:匿名内部类被调用");
}
}.show();
IN i = new IN() {
//注意这里的定义
@Override
public void show() {
System.out.println("第二种输出:匿名内部类被调用(输出3次喔)");
}
};
for(int j=0;j<3;j++)
{
i.show();
}
}
}
//测试类
public class demo {
public static void main(String[] args) {
OUT o = new OUT();
o.mt();
}
}
输出:
第一种输出:匿名内部类被调用
第二种输出:匿名内部类被调用(输出3次喔)
第二种输出:匿名内部类被调用(输出3次喔)
第二种输出:匿名内部类被调用(输出3次喔)
ywq
love