代发网站建设,宁波网页平面设计,怎么用wordpress做搜索网站,互联网培训机构有哪些文章目录 什么是 Java 中的内部类#xff1f;有哪些类型的内部类#xff1f;匿名内部类局部内部类#xff08;定义在方法中的类#xff09;局部内部类静态内部类 Java 类中不仅可以定义变量和方法#xff0c;还可以定义类#xff0c;这样定义在类内部的类就被称为内部类。… 文章目录 什么是 Java 中的内部类有哪些类型的内部类匿名内部类局部内部类定义在方法中的类局部内部类静态内部类 Java 类中不仅可以定义变量和方法还可以定义类这样定义在类内部的类就被称为内部类。根 据定义的方式不同内部类分为静态内部类成员内部类局部内部类匿名内部类四种。 什么是 Java 中的内部类有哪些类型的内部类
内部类是定义在另一个类中的类。Java 中有四种类型的内部类成员内部类、静态内部类、局部内部类和匿名内部类。
Java 内部类是定义在另一个类内部的类。与外部类不同内部类可以访问定义它们的外部类的成员变量和方法并且可以被私有化从而实现了封装。 Java 内部类可以分为四种类型成员内部类 成员内部类是定义在类内部并且不是静态的内部类。成员内部类可以访问外部类中的所有成员变量和方法并且可以被私有化从而实现了更好的封装性。 undefined 静态内部类 静态内部类是定义在类内部并且被声明为静态的内部类。静态内部类只能访问外部类中的静态成员变量和方法不能访问非静态成员变量和方法因为在外部类实例化时静态内部类已经存在于内存中而非静态成员变量和方法是需要实例化后才能被访问的。 undefined 局部内部类 局部内部类是定义在方法或代码块中的内部类。局部内部类只能在定义它的方法或代码块中使用具有更小的作用域。 undefined 匿名内部类 匿名内部类是没有类名的内部类用于定义一次性的、功能简单的类。通常用于实现接口或继承父类并且只会使用一次。 内部类的使用场景包括 undefined 为某个类提供一些帮助类这些类只在外部类中使用到。 undefined 实现某个接口或继承某个类在最终的类中需要使用到。由于匿名内部类只能使用一次所以通常用于比较简单的实现。 undefined 隐藏某个类或接口只能在外部类中使用。 undefined 将所有的辅助类都放在同一个包中使得包对外暴露的类都是一个类而不是多个类的组合。 总的来说Java 内部类提供了更好的封装和组织代码的方式可以使代码更加清晰、简洁并且更加方便实现一些复杂的逻辑。
匿名内部类
要继承一个父类或者实现一个接口、直接使用new 来生成一个对象的引用 匿名内部类我们必须要继承一个父类或者实现一个接口当然也仅能只继承一个父类或者实现一个接口。同时它也是没有 class 关键字这是因为匿名内部类是直接使用 new 来生成一个对象的引用
public abstract class Bird {private String name;public String getName() {return name;}public void setName(String name) {this.name name;}public abstract int fly();
}
public class Test {public void test(Bird bird){System.out.println(bird.getName() 能够飞 bird.fly() 米);}public static void main(String[] args) {Test test new Test();test.test(new Bird() {public int fly() {return 10000;}public String getName() {return 大雁;}});}
}匿名内部类是唯一一种没有构造器的类。正因为其没有构造器所以匿名内部类的使用范围非常有限大部分匿名内部类用于接口回调。匿名内部类在编译的时候由系统自动起名为Outter$1.class。一般来说匿名内部类用于继承其他类或是实现接口并不需要增加额外的方法只是对继承方法的实现或是重写。
public class Demo {private Runnable runnable new Runnable() {overridepublic void run() {}}
}局部内部类定义在方法中的类
定义在方法中的类就是局部类。如果一个类只在某个方法中使用则可以考虑使用局部类。 public class Out { private static int a; private int b; public void test(final int c) { final int d 1; class Inner { public void print() { System.out.println©; } } } }
局部内部类
定义在类内部的非静态类就是成员内部类。成员内部类不能定义静态方法和变量final 修饰的 除外。这是因为成员内部类是非静态的类初始化的时候先初始化静态成员如果允许成员内 部类定义静态变量那么成员内部类的静态变量初始化顺序是有歧义的。 public class Out { private static int a; private int b; public class Inner { public void print() { System.out.println(a); System.out.println(b); } } }}
静态内部类
定义在类内部的静态类就是静态内部类
public class Out {private static int a;private int b;public static class Inner {public void print() {System.out.println(a);}}
}undefined 静态内部类可以访问外部类所有的静态变量和方法即使是 private 的也一样。 undefined 静态内部类和一般类一致可以定义静态变量、方法构造方法等。 undefined 其它类使用静态内部类需要使用“外部类.静态内部类”方式如下所示
Out.Inner inner
new Out.Inner();inner.print();undefined Java集合类HashMap内部就有一个静态内部类Entry。Entry是HashMap存放元素的抽象 HashMap 内部维护 Entry 数组用了存放元素但是 Entry 对使用者是透明的。像这种和外部 类关系密切的且不依赖外部类实例的都可以使用静态内部类。
参考 https://blog.csdn.net/liuxiao723846/article/details/108006609