当前位置: > 财经>正文

内部类有哪几种

2023-07-15 01:38:23 互联网 未知 财经

内部类有哪几种

内部类有哪几种 内部类静态内部类成员内部类局部内部类匿名内部类

内部类

内部类(nested classes),面向对象程序设计中,可以在一个类的内部定义另一个类。嵌套类分为两种,即静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。内部类是JAVA语言的主要附加部分。内部类几乎可以处于一个类内部任何位置,可以与实例变量处于同一级,或处于方法之内,甚至是一个表达式的一部分。

静态内部类 静态内部类定义在类中,任何方法外,用static定义。静态内部类只能访问外部类的静态成员。生成(new)一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成: Outer.Inner in=new Outer.Inner();而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类。可以定义私有静态内部类。静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。静态内部类是不需要依赖于外部类的,这点和类的静态成员属性有点类似,并且它不能使用外部类的非static成员变量或者方法,这点很好理解,因为在没有外部类的对象的情况下,可以创建静态内部类的对象,如果允许访问外部类的非static成员就会产生矛盾,因为外部类的非static成员必须依附于具体的对象。当类与接口(或者是接口与接口)发生方法命名冲突的时候,此时必须使用内部类来实现。用接口不能完全地实现多继承,用接口配合内部类才能实现真正的多继承。举例: public class Test { public static void main(String[] args) { Outter.Inner inner = new Outter.Inner(); }} class Outter {int a = 6;static int b = 9; public Outter() { } static class Inner { public Inner() { System.out,println(a);//此时这行代码会报错,因为它不能使用外部类的非static成员变量或者方法 System.out,println(b);//正确 } }} 成员内部类 成员内部类,可以访问外部类的私有成员或属性。作为外部类的一个成员存在,与外部类的属性、方法并列。内部类和外部类的实例变量可以共存。在内部类中访问实例变量:this.属性。在内部类访问外部类的实例变量:外部类名.this.属性。在外部类的外部访问内部类,使用out.inner.成员内部类的特点: 内部类作为外部类的成员,可以访问外部类的私有成员或属性。(即使将外部类

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。