li

XXXXX

 

java--内部类

一、定义内部类

  • 当一个类定义在另一个类的内部,称之为内部类;
  • 内部类(Inner)只服务于(Outer),可以获取内部类的属性和方法;
  • 定义内部类对象时,一般通过外部类的构造方法或普通方法创建对象。
public class Outer { 
    private String name = "zhang3";//外部类的私有属性 
    public Outer() { 
        Inner i = new Inner(); 
        i.nameInfo(); 
    }
    /*内部类Inner*/ 
    class Inner{ //成员内部类
        public void nameInfo(){ 
            name = name + "info"; 
        } 
    }
    public static void main(String[] args) { 
        Outer o = new Outer(); 
        System.out.println(o.name); 
    }
}

二、匿名内部类

  • 匿名内部类,就是new接口和new抽象类
public interface User{
    public void login();
}
public class Test01{
    public static void main(String[] args){
        User u=new User(){
            @Override 
            public void login() { 
                System.out.println("show..");
            }
        };
        u.login();
    }
}

三、非静态内部类

外部类名.内部类名 变量名

外部类对象.new 内部类名();

1、非静态内部类必须寄存在一个外部类对象里,因此,如果有一个非静态内部类对象,那么一定存在对应的外部类对象;

2、非静态内部类对象单独属于外部类的某个对象;

3、非静态内部类不能由静态方法,静态属性,静态初始化;

4、外部类的静态方法,静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量,创建实例

四、静态内部类

外部类名.内部类名 变量名

new 外部类名.内部类名();

所谓静态内部类,就是使用static关键字修饰的成员内部类,与成员内部内部类相比,在形式上,静态内部类只是在内部类前增加了static关键字,但在功能上,静态内部类中只能访问外部类的静态成员,同时通过外部类访问静态内部类成员时,可以跳过外部类从而直接通过内部类访问静态内部类成员。

 

posted on 2022-05-08 19:38  LXXXXxZz  阅读(48)  评论(0编辑  收藏  举报

导航