前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 内部类有哪些?

Java 内部类有哪些?

作者头像
水货程序员
修改2018-12-03 14:52:23
1K0
修改2018-12-03 14:52:23
举报
文章被收录于专栏:javathingsjavathings

有 4 种,静态内部类,成员内部类,局部内部类,匿名内部类。

内部类的修饰符比外部类多,外部类只能用 public 修饰,而内部类除了 public,还能用 private,protected,和 static 修饰。

静态内部类

static 修饰的就是静态内部类。这个内部类就属于外部类自身,而不是属于外部类的实例。

代码语言:javascript
复制
class outerClass {
	 static class innerClass{//静态内部类
		 static public void f1(){};
		 public void   f2(){};
	 }
}
 
//访问静态内部类成员的方法
outerClass.innerClass.f1();
new outerClass.innerClass().f2();

成员内部类

成员内部类就是类的一个成员。它是与类的实例捆绑在一起的,所以不能定义静态属性和方法。只有在外部类实例化后,这个内部类才能实例化。

代码语言:javascript
复制
public class outerClass {
	public class innerClasss1{}
}
 
//实例化内部类
outerClass.innerClasss1 c=new outerClass().new innerClasss1();

局部内部类

局部内部类是方法中定义的类,它不能在该方法之外使用,因此局部内部类不能使用任何访问控制符修饰,也不能用 static。

局部内部类的作用域很小,因此实际开发中很少使用。

代码语言:javascript
复制
public class outerClass {
	void f(){
		class innerClasss2{}//局部内部类
		innerClasss2 c=new innerClasss2();
	 }
	 
}

匿名内部类

匿名内部类适合创建只需要使用一次的类。创建匿名内部类,就是立即创建这个类的实例。匿名内部类不能重复使用。匿名内部类必须实现一个接口,或者继承一个类。

代码语言:javascript
复制
//抽象类
abstract class Animal{
  public abstract void bark();
}
 
//继承抽象类Animal,实现一个匿名类并实例化了它。
Animal an=new Animal(){
    public void bark(){
       System.out.println("汪汪汪...");
    }
};
an.bark();
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档