关于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关键字。

目录
相关文章
|
Java 编译器
java“变量 x 可能未被初始化”解决
在Java中,如果编译器检测到变量可能在使用前未被初始化,会报“变量 x 可能未被初始化”的错误。解决方法包括:1. 在声明变量时直接初始化;2. 确保所有可能的执行路径都能对变量进行初始化。
1093 2
|
11月前
|
存储 Java C++
Java数组:静态初始化与动态初始化详解
本文介绍了Java中数组的定义、特点及初始化方式。
882 12
Java 静态变量的初始化顺序
【10月更文挑战第15天】了解 Java 静态变量的初始化顺序对于正确编写和维护代码至关重要。通过深入理解初始化顺序的原理和细节,我们可以更好地避免潜在的问题,并提高代码的质量和可靠性。
|
Java 编译器
【一步一步了解Java系列】:子类继承以及代码块的初始化
【一步一步了解Java系列】:子类继承以及代码块的初始化
296 3
|
Java
java构造方法时对象初始化,实例化,参数赋值
java构造方法时对象初始化,实例化,参数赋值
377 1
|
Java 编译器
【Java】内部类
【Java】内部类
116 1
|
安全 Java 关系型数据库
Java连接Mysql SSL初始化失败
Java连接Mysql SSL初始化失败
【Java基础面试二】、个Java文件里可以有多个类吗(不含内部类)?
这篇文章讨论了Java文件中类的定义规则,指出一个Java文件可以包含多个类(不包含内部类),但其中最多只能有一个public类,且如果有public类,它的名称必须与文件名一致。
|
存储 Java
如何在 Java 中初始化二维 ArrayList
【8月更文挑战第23天】
396 1
|
算法 Java
12 Java常用类(一)(内部类+object类+包装类)
12 Java常用类(一)(内部类+object类+包装类)
151 5