Java 内部类有哪些?
783 total views, 3 views today
有 4 种,静态内部类,成员内部类,局部内部类,匿名内部类。
内部类的修饰符比外部类多,外部类只能用 public 修饰,而内部类除了 public,还能用 private,protected,和 static 修饰。
静态内部类
static 修饰的就是静态内部类。这个内部类就属于外部类自身,而不是属于外部类的实例。
1 2 3 4 5 6 7 8 9 10 |
class outerClass { static class innerClass{//静态内部类 static public void f1(){}; public void f2(){}; } } //访问静态内部类成员的方法 outerClass.innerClass.f1(); new outerClass.innerClass().f2(); |
成员内部类
成员内部类就是类的一个成员。它是与类的实例捆绑在一起的,所以不能定义静态属性和方法。只有在外部类实例化后,这个内部类才能实例化。
1 2 3 4 5 6 |
public class outerClass { public class innerClasss1{} } //实例化内部类 outerClass.innerClasss1 c=new outerClass().new innerClasss1(); |
局部内部类
局部内部类是方法中定义的类,它不能在该方法之外使用,因此局部内部类不能使用任何访问控制符修饰,也不能用 static。
局部内部类的作用域很小,因此实际开发中很少使用。
1 2 3 4 5 6 7 |
public class outerClass { void f(){ class innerClasss2{}//局部内部类 innerClasss2 c=new innerClasss2(); } } |
匿名内部类
匿名内部类适合创建只需要使用一次的类。创建匿名内部类,就是立即创建这个类的实例。匿名内部类不能重复使用。匿名内部类必须实现一个接口,或者继承一个类。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//抽象类 abstract class Animal{ public abstract void bark(); } //继承抽象类Animal,实现一个匿名类并实例化了它。 Animal an=new Animal(){ public void bark(){ System.out.println("汪汪汪..."); } }; an.bark(); |
原创文章,转载请注明出处!http://www.javathings.top/java内部类有哪些?/