java四种内部类的简单分析

一、内部类:
    1.静态内部类:
        1.必须以static关键字标注
        2.只能访问外部类中的静态的成员变量或者是静态的方法    
        3.访问一个内部类使应该这样outerClass.innerClass inter = new outerClass.innerClass();不能直接实例化内部类    
        2.成员内部类:
        1.定义在一个类的内部,但是没有static关键字修饰
        2.生成示例的方法outerClass.innerClass inter = (new outerClass()).new innerClass()
        3.对外部类变量的引用outClass.this.variale
        4.可以访问外部类的静态与非静态方法
    3.局部内部类:
        1.局部内部类指的是定义在一个方法中的类
        2.只有在当前方法中才能对局部内部类里面的方法以及变量进行访问
        3.局部内部类只能访问其所在方法的final类型变量
    4.匿名内部类:
        隐式的继承一个父类或者是实现某个接口


举例说明:

    1.

package tp85.innerClass;


public class StaticDemo
{
    public static void main(String[] args)
    {
        BB.AA ba = new BB.AA();
        ba.put();
    }
 
}
class BB
{
    int a = 1;
    static int b = 2;
     static class AA
        {
            void put()
            {
                System.out.println("helloword");
                //只能访问其外部类的static变量
                //System.out.println(a);
                System.out.println(b);
            }
        }
}


    2.

package tp85.innerClass;

public class MenberDemo
{
    public static void main(String[] args)
    {
        //成员内部类的实例化比较特殊,如下所示
        DD.CC dc = new DD().new CC();
        dc.put();
    }
}
class DD
{
    int a = 1;
    static int b = 2;
    class CC
        {
            void put()
            {
                System.out.println("helloword");
                //能访问其外部类的static变量或者是非静态的变量
                System.out.println(a);
                System.out.println(b);
            }
        }
}


    3.
package tp85.innerClass;

public class PartDemo
{
    public static void main(String[] args)
    {
        FF ff = new FF();
        ff.put();
    }
}
class FF
{
    
    void put()
    {
        //只能是final类型的
        final int b = 2;
        class EE
        {
            int a = 1;
            void print()
            {
                System.out.println("print");
                System.out.println(b);
            }
            
        }
        new EE().print();// 只有在同一方法下才能实例化此类型的内部类
    }
}
    4.


package tp85.innerClass;

public class StaticDemo
{
    public static void main(String[] args)
    {
        BB.AA ba = new BB.AA();
        ba.put();
    }
 
}
class BB
{
    int a = 1;
    static int b = 2;
     static class AA
        {
            void put()
            {
                System.out.println("helloword");
                //只能访问其外部类的static变量
                //System.out.println(a);
                System.out.println(b);
            }
        }
}    







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值