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   LXXXXxZz  阅读(53)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix

导航

统计

点击右上角即可分享
微信分享提示