浅谈四种内部类
来源:互联网 发布:kbar软件官方 编辑:程序博客网 时间:2024/05/21 07:09
Java中内部类分为四种,分别是静态内部类、成员内部类、局部内部类和匿名内部类。下面分别介绍这四种内部类以及相互之间的联系和区别。
(1)静态内部类(static inner class)
①定义方式:
public class OuterClass{//外部类
public static class StaticInnerClass{ } //这个为静态内部类
}
②实例化方式:
OuterClass.StaticInnerClass innerClass = new OuterClass.StaticInnerClass();
③注意事项:
由于此内部类为静态内部类,所以它只能访问外部类中的静态成员变量和静态成员方法,不能访问非静态的成员变量和方法。理解这一点可以类比静态方法。
(2)成员内部类(member inner class)
①定义方式:
public class OuterClass{//外部类
public class MemberInnerClass{ } //这个为成员内部类
}
②实例化方式:
OuterClass.MembetInnerClass innerClass = new OuterClass().new MemberInnerClass();
③注意事项:
由于此内部类为成员内部类,所以它能访问外部类中的所有成员变量和成员方法,包括静态和非静态。理解这一点可以类比普通方法。
***************************************************************************************************************************************************************************************
【对比】静态内部类和成员内部类的实例化方式:
由于静态内部类的对象是属于外部类,而不是属于外部类的对象,所以其实例化时直接通过外部类的类名加内部类的类名来完成。而成员内部类的对象属于外部类的对象,所以其实例化需要通过外部类的对象加内部类的类名来完成。
****************************************************************************************************************************************************************************************
(3)局部内部类(local inner class)
①定义方式:
public class OuterClass{//外部类
public void test(){//外部类中的方法
class LocalInnerClass{ } //局部内部类
//此处实例化局部内部类的方法
}
}
②实例化方式:
由于局部内部类在OuterClass类以外无法访问(理解这一点可以类比方法的局部变量),所以对局部内部类的访问只能在定义该类的方法中完成。
③注意事项:
局部内部类只能访问外部类的final类型的变量。
(4)匿名内部类(anonymous inner class)
①定义方式:
public class OuterClass{
public Strring get(Date date){
return data.toLocaleString();
}
public static void main(String[] args){
OuterClass outerClass = new OuterClass();
String str = outerClass.get(new Date()){
@Override
public String toLocaleString(){
return "hello world";
}//匿名内部类结束
};
}
}
②实例化方式:
由于匿名内部类没有类名,也就没有构造方法,所以无法进行实例化。
③注意事项:
<1>匿名内部类没有类名,没有访问修饰符,没有extends和implements等关键字,也没有构造方法。
<2>匿名内部类隐式的继承了一个类或者实现了一个接口,上面例子中就是继承了Date类。(继承的类或者实现的接口就是new后面的那个类或者接口)以上是本人关于内部类的理解,如有不当之处,敬请指正。
- 浅谈四种内部类
- java--内部类浅谈
- 浅谈---内部类
- 浅谈-----匿名内部类
- 浅谈内部类
- 浅谈java内部类
- 浅谈java内部类
- 浅谈静态内部类
- 浅谈java内部类
- 匿名内部类浅谈
- 浅谈Java内部类
- 浅谈匿名内部类
- 浅谈Java内部类
- 浅谈内部类
- 浅谈Java中的内部类
- 浅谈内部类-Inner class
- 【java】浅谈java内部类
- 浅谈c++和java的内部类
- LINQ Compiled Query操作
- button 边框
- github我见过的牛逼的人的主页,项目中有可能用到
- 双缓冲队列
- 创建守护进程
- 浅谈四种内部类
- Android Studio Gradle命令详解与导入第三方包
- "黑魔法"Method Swizzling和IMP指针
- C语言基础测试题02
- ViewPager数据加载错乱的问题
- 如何在LINUX VPS上安装VPN详细步骤
- quick-cocos2d-x源文件编译及加密详解
- Flex -> JDK8: Unable to Resolve javax.swing ?
- easyui重载数据表格当前页面脚本发生错误