Java学习笔记(7):内部类

  1. 定义格式:
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

猜你喜欢

转载自blog.csdn.net/qq_51677496/article/details/113105831