java内部类即static修饰类的疑惑解决

一、成员内部类

class A{
    class B{
    
    }
}

格式如上所示,B为A的成员内部类,A为B的外部类。主要有以下的一些特性:

1.成员内部类可以无条件访问外部类的属性和方法,

2.当外部类需要访问成员内部类的属性和方法时,则需要创建一个内部类对象进行访问,在其他类中创建方式为:A a = new A(); B b = a.new B();  如果是在类A中则只需 B b = new B();

3.内部类与外部类的属性或方法相同时:外部类的属性和方法在内部类中将被隐藏,这时如果要访问就需要this关键字:A.this.属性/方法。

4.可加四种访问修饰符

二、静态内部类

class E {
    static class F{
    
    }

}

格式如上所示,可以看到和全局内部类差一个static,这个static是什么呢?之前看过一句话总结的很到位:

static可以用来区分成员变量、方法是属于类本身还是属于类实例化后的对象。有static修饰的成员属于类本身,没有static修饰的成员属于类的实例。

静态内部类和静态方法类似,只能访问静态成员变量和方法,原因:外部类加载时只会加载静态域。

静态内部类可以声明普通成员变量和方法,成员内部类不能声明static成员变量和方法。

创建对象的方式:F f = new E.F(); 

当外部类需要使用内部类,且内部类无需外部类资源,并且内部类可以单独创建时使用。

三、局部内部类

class C{
    public void hello(){
        class D{
              
        }
    }

}

格式如上图所示,局部内部类存在于方法之中,因此,其访问权限受限,仅限于方法或作用域内。

类似于局部变量,前面不能使用 访问修饰符和static修饰符

四、匿名内部类

定义一个类的同时对其进行实例化。它与局部类很相似,不同的是它没有类名,当某个局部类你只需要用一次,就可以使用匿名内部类。

匿名内部类主要分为实现接口的和继承父类的两种,代码实例此时不方便列出,详细的内容可以参考匿名内部类详解

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值