Java内部类可以public吗,Java 内部类

Java 内部类

什么是内部类?

在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。

主要用以下几种

成员内部类

局部内部类

匿名内部类

静态内部类

Java 成员内部类示例

访问权限

private 访问权限

protected 访问权限

public 访问权限

package 访问权限

public class TestClass {

public void a()

{

LogHelper.log("我是TestClass 的a()");

InnerClass inner = new InnerClass();

inner.b();

inner.b2();

}

private class InnerClass

{

public void b()

{

LogHelper.log("我是InnerClass 的b()");

}

private void b2()

{

LogHelper.log("我是InnerClass 的b2()");

}

}

public static void main(String[] args)

{

TestClass test = new TestClass();

test.a();

}

}

运行结果为

【www.pangugle.com】- 我是TestClass 的a()

【www.pangugle.com】- 我是InnerClass 的b()

【www.pangugle.com】- 我是InnerClass 的b2()

从上面结果我们看出TestClass 可以调用 InnerClass b() 和 b2()方法,

也就是说InnerClass对于TestClass 来就就像一个孩子一样!

Java 局部内部类示例

局部内部类是定义在一个方法或者一个作用域里面的类,它不能有任何的

private public protected static 等来修饰!

public class TestClass {

public void a()

{

LogHelper.log("我是TestClass 的a()");

class InnerClass

{

public void b()

{

LogHelper.log("我是InnerClass 的b()");

}

private void b2()

{

LogHelper.log("我是InnerClass 的b2()");

}

}

InnerClass inner = new InnerClass();

inner.b();

inner.b2();

}

public static void main(String[] args)

{

TestClass test = new TestClass();

test.a();

}

}

从上面我们可以看到我们把InnerClass 放在了 a() 方法里面, 需要注意的是,如果此时我们想添加

public private 等修饰,编译器会直接报错!

Java 匿名内部类示例

匿名内部类是应用非常广泛的地方,在实际开发工作中,我经常使用此方式来做回调类相关的!

还记得 Java 泛型接口类的使用吗?

// 定义一个回调泛型类

public interface Callback

{

public void execute(T model);

}

public class Test {

public static void main(String[] args)

{

Callback callback = new Callback() {

public void execute(String o) {

LogHelper.log("rs = " + o);

}

};

for(int i = 0; i < 10; i ++)

{

callback.execute(" i = " + i);

}

}

}

Java 静态内部类

静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。静态内部类是不需要依赖于外部类的就可以直接初始化, 除了这点不同,其它都一样!

public class TestClass {

public static class InnerClass

{

public void b()

{

LogHelper.log("我是InnerClass 的b()");

}

}

public static void main(String[] args)

{

InnerClass inner = new TestClass.InnerClass();

inner.b();

}

}

你可能感兴趣的:(Java内部类可以public吗,Java 内部类)