java内部类

java中的内部类

Inner Class 将相关的类组织在一起,从而降低了命名空间的混乱,一个内部类定义在函数里,甚至可以作为表达式的一部分
使用内部类的优点:
1)实现多重继承;
2)内部类可以很好的实现隐藏:一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
3)减少了类文件编译后的产生的字节码文件的大小

java中的内部类主要包括四个方面

(1)静态内部类 Static Inner Class
最简单的内部类,定义时加上static关键字,不能和外部类有相关的名字。被编译成一个完全独立的Class文件,名称为OuterClass$InnerClass.class的形式
只可以访问外部类的静态成员和静态方法,包括了私有的静态成员和方法

(2)成员内部类
  成员内部类也是定义在另一个类中,但是定义时不用static修饰。
  成员内部类就像一个实例变量,它可以访问它的外部类的所有成员变量和方法,不管是静态的还是非静态的都可以。
  
(3)局部内部类Local Inner Class
  局部内部类定义在方法中,比方法的范围还小。是内部类中最少用到的一种类型。
  像局部变量一样,不能被public, protected, private和static修饰。
  只能访问方法中定义的final类型的局部变量。
  局部内部类在方法中定义,所以只能在方法中使用,即只能在方法当中生成局部内部类的实例并且调用其方法
(4)匿名内部类Anonymous Inner Class
  匿名内部类就是没有名字的局部内部类,不使用关键字class, extends, implements, 没有构造方法。匿名内部类隐式地继承了一个父类或者实现了一个接口。匿名内部类使用得比较多,通常是作为一个方法参数。
  如果一个内部类在整个操作中只使用一次的话,就可以定义为匿名内部类。匿名内部类也就是没有名字的内部类,这是java为了方便我们编写程序而设计的一个机制,因为有时候有的内部类只需要创建一个它的对象就可以了,以后再不会用到这个类,这时候使用匿名内部类就比较合适。

/*
 * 匿名内部类
 */
public interface Person 
{
    public void run();
}

/*
 * 测试类
 */
public class Test
 {
    public static void main(String[] args) 
    {
        Person p=new Person() 
        {        
            public void run() 
            {
                System.out.println("匿名内部类实现的");
            }
        };
        p.run();
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值