关于Java内部类的初始化

简介: Java类的位置1、在同个Java文件中,但不是内部类public class Test {}class T{}这里的T不是内部类,只是在Test.java文件的内部而已。

Java类的位置

1、在同个Java文件中,但不是内部类

public class Test {

}
class T{

}
  • 这里的T不是内部类,只是在Test.java文件的内部而已。
  • T 的修饰符只允许使用“public”、“abstract”和“final”。
  • T的实例化过程和主类没有区别
T t = new T();

就可以,在本Java文件和其他Java文件都是这样实例化。但是要注意,由于没有权限修饰符是默认包访问权限,所以只能在包内实例化。

2、常规内部类

public class Outter{
    class Inner {}
    public void fun(){
        Inner in = new Inner();
    }
    public void fun2(){
        Outter out = new Outter();
        Outter.Inner in = out.new Inner();
        Outter.Inner in2 = new Outter().new Inner();
    }
}

要实例化内部类对象,必须先有外部类对象,通过外部类对象.new 内部类();来实例化内部类对象,在其他文件或者其他包内都是这样,只是要能在其他包实例化的话,内部类Inner还得加上修饰符public。

3、静态内部类

class Outter {
    private static int age = 12;
    static class Inner {
        public void print() {
            System.out.println(age);
        }
    }
}

public class test1 {
    public static void main(String[] args) {
        Outter.Inner in = new Outter.Inner();
        in.print();
    }
}

实例化静态内部类和实例化常规内部类有类似的地方,而不同之处在与静态内部类由于是静态的,所以不需要外部类对象就可以实例化,如上例Outter.Inner in = new Outter.Inner();
在其他Java文件也是这么实例化的。

4、局部内部类

    public class A {  
        class B {  

        }  

        public void pint() {  
            class C {  
            }  
            new C();  
        }  

        public void pint(boolean b) {  
            if (b) {  
                class D {  
                }  
                new D();  
            }  
        }  
    }  

局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内,所以只能在方法或者该作用域内实例化。

5、匿名内部类

new ClassOrInterfaceName(){
    /*类体*/ }

匿名内部类可以继承一个类或实现一个接口,这里的ClassOrInterfaceName是匿名内部类所继承的类名或实现的接口名。但匿名内部类不能同时实现一个接口和继承一个类,也不能实现多个接口。如果实现了一个接口,该类是Object类的直接子类,匿名类继承一个类或实现一个接口,不需要extends和implements关键字。

目录
相关文章
|
2月前
|
Java
java中,剩下的这两个内部类不太好理解!
java中,剩下的这两个内部类不太好理解!
14 0
|
2月前
|
Java 编译器
java中常见的几种内部类,你会几个?(未完)
java中常见的几种内部类,你会几个?(未完)
15 1
|
9天前
|
XML 存储 Java
11:Servlet中初始化参数的获取与应用-Java Web
11:Servlet中初始化参数的获取与应用-Java Web
22 3
|
2天前
|
Java
Java内部类
Java内部类
8 2
|
4天前
|
存储 IDE Java
Java一分钟之变量声明与初始化基础
【5月更文挑战第7天】本文介绍了Java编程中的变量声明与初始化,包括变量的类型和命名规则,以及显式和默认初始化。文章强调了局部变量必须初始化的重要性,并列举了三个常见问题:类型不匹配、未初始化和作用域混淆。为避免这些问题,建议明确类型、主动初始化、注意作用域,并利用IDE辅助。通过示例代码展示了正确使用变量的方法,鼓励读者通过实践加深理解。
14 0
|
6天前
|
Java
Java为什么建议初始化HashMap的容量大小?
Java中初始化HashMap容量能提升性能。默认容量16,扩容按当前的1/2进行。预估元素数量设定合适容量可避免频繁扩容,减少性能损耗。过大浪费内存,过小频繁扩容,需权衡。Java 8后扩容策略调整,但核心仍是预估初始容量以优化性能。
30 1
|
12天前
|
Java 编译器
【Java探索之旅】解密构造方法 对象初始化的关键一步
【Java探索之旅】解密构造方法 对象初始化的关键一步
16 1
|
12天前
|
存储 Java 编译器
【Java探索之旅】数组概念与初始化指南:动静结合
【Java探索之旅】数组概念与初始化指南:动静结合
22 0
|
19天前
|
Java
Java类 初始化顺序 | 静态数据的初始化
Java类 初始化顺序 | 静态数据的初始化
8 0
|
23天前
|
Java
什么是Java内部类,为什么使用它?
【4月更文挑战第13天】
18 1