类和接口 - 优先考虑静态成员类

xiaoxiao2021-02-27  177

知识点:

1. 四种嵌套类。

2. 什么情况下该用哪种嵌套类。

1. 四种嵌套类

嵌套类,定义在另一个类的内部的类。四中嵌套类如下:

a.静态成员类

b.非静态成员类

c.局部类

d.匿名类

a.静态成员类

看下面代码,Inner就是静态成员类,定义在类内部,用static修饰,静态成员类内部可以访问外层类的静态成员。

class StaticInner { private static int a = 4; // 静态内部类 public static class Inner { } }

b.非静态成员类

看下面代码,Inner就是非静态成员类,定义在类内部,没有static修饰,非静态成员类可以访问外层类的静态成员和非静态成员。

class StaticInner { private static int a = 4; // 静态内部类 public class Inner { } } c.局部类

看下面代码,Inner就是局部类,定义在方法内部,像局部变量不能用访问修饰符修饰。只能在方法中使用。

class LocalInner { int a = 1; public void doSomething() { // 局部内部类 class Inner { } } } d.匿名类

看下面代码,下面是线程的匿名内部类,隐含的继承了Thread类,相当于没有名字的局部类

Thread t = new Thread() { public void run() { } }

2. 什么情况下该用哪种嵌套类。

先看你的类在哪里使用,方法里面使用用局部类或者匿名类。类里面使用用静态成员类或非静态成员类。后面按照下面需求看用哪一种类。

a.静态成员类 : 需要外层类实例的引用

b.非静态成员类 : 不需要外层类实例的引用

c.局部类 : 只在一个方法里面使用多次。

d.匿名类 : 只在一个方法里面使用一次。

转载请注明原文地址: https://www.6miu.com/read-9458.html

最新回复(0)