知识大全 将内部类进行到底
Posted 知
篇首语:真者,精诚之至也,不精不诚,不能动人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 将内部类进行到底相关的知识,希望对你有一定的参考价值。
总结了一下内部类的一下特性和容易出错的地方 给大家看看~~ 有什么错误 望指正~~~ (一) Java 以后版本添加了嵌套类(Inner Class 嵌套类 内部类) 嵌套类定义在类(外部类)里面 嵌套类可以体现逻辑上的从属关系 同时对于其他类可以控制内部类不可见等 外部类的成员变量作用域是整个外部类 包括嵌套类 但外部类不能访问嵌套类的private成员 例子 public class Outer private int size; public class Inner private int counter = ; public void doStuff() size++; public static void main(String args[]) Inner inner= new Inner(); inner doStuff(); System out println(size); System out println(unter); System out println(counter); //编译错 (二)下面演示了如何在外部类之外实例出一个public Inner类对象 类名前加上外部类类名 new语句前加上外部类的引用变量 这很类似package的使用 例子 public class Outer private int size; public class Inner public void doStuff() size++; public class TestInner public static void main(String args[]) Outer outer = new Outer(); Outer Inner inner = outer new Inner(); inner doStuff(); (三)当内部类与外部类有同名变量时 缺省指本类中的变量 例子 public class Outer private int size; public class Inner private size; public void doStuff(int size) size++; this size++; Outer this size++; // 错误 Outer size++因为size不是静态变量 public static void main(String args[]) this size++; //错误 静态方法使用非静态变量this (四)在方法中定义一个嵌套类 注意嵌套类不可以访问方法的局部变量 因为方法的局部变量只存在与方法作用期间 故localvalue不可访问 而final变量的生命周期超出了方法 所以fianlvalue可用 public class Outer private int size = ; public Object makeTheInner(int localvalue) final int finalvalue = ; class Inner public String toString()return ( Inner is +size+localvalue+finalvalue); return new Inner(); public static void main(String args[]) Outer outer = new Outer(); Object obj = outer makeTheInner( ); System out println( The object is + obj); (五) 嵌套类的类名必须与包装它的外部类区别 且嵌套类的类名仅仅可以作用于定义范围中 方法中定义类 其类名名就只能出现在方法中 定义在方法中的嵌套类只能使用定义为final的局部变量 不可以使用方法中的非静态变量 嵌套类可以使用的变量种类包括 类变量 实例变量 final局部变量 嵌套类同样具有所有的访问控制权限 高级类属性 嵌套类可以是abstract类 嵌套类可以是接口 被其它嵌套类实现 定义为static的内部类将成为顶级类(top level) 它们不依赖于外部类的对象而生成 所以不可以访问外部类的对象成员 非static内部类不能定义static成员 当外部类编译时 内部类也会编译 生成的类文件格式为: OuterClass$InnerClass 如Outer$Inner class 例子 class Outer private int size = ; static class Inner int value= ; public void doStuff() size+=value; // 错误 不能访问非static 外部类程序 public class TestInner public static void main(String args[]) Outer outer = new Outer(); Inner inner = new Inner();// 这种实例也不对 应该 Out Inner innner=new Outer Inner() ; 在总结的第(五)里面 非static内部类不能定义static成员 ( )定义 static 的 内部类 如果成员变量也定义成 static 那么外围类可以直接通过类名来访问 ( )定义 static 的 内部类 如果成员变量不是 static 那么外围类需要生成内部类的对象才能访问 否则直接访问导致编译出错!! cha138/Article/program/Java/hx/201311/26203相关参考
Java通过对Java语言规范进行修改显著简化了一些实用结构的实现在那些修改中最引人注目的就是内部类和匿名类如运用得当它们可使程序更易理解和维护本文介绍内部类和匿名
鱼鳞病孕妇,如何将健康进行到底。孕妇鱼鳞病的话,又恨的几率河坑会遗传给孩子。但是,如果控制得当的话,健康的几率也是很高的。那么,鱼鳞病孕妇如何才能将健康进行到最后呢?第一,鱼鳞病的孕妇日常饮食。要食用
1.避免紧张首先就要做好充足的资料准备,今明两天要做好所有资料的准备工作,有条理的记熟。做好充分的心理准备,看轻得失。对手可能更紧张。坐姿标准一些,要坐得舒服,身体稍往前倾。进门之前深吸一口气。评委问
Java内部类与匿名内部类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 定义在类中方法之外的内
知识大全 请问会计档案中的银行余额调节表到底是属于会计凭证还是其他类
请问会计档案中的银行余额调节表到底是属于会计凭证还是其他类?通过银行余额调节表进行调账,调账之后如果平了说明是因为未达账项造成报表不平账目本身没有错调账之后如果不平说明自己做的账有错误银行余额调节表不
publicinterfaceContents intvalue(); publicinterfaceDestination StringreadLabel(); publiccl
JAVA中使用内部类与匿名内部类实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! JAVA中对
为正确理解static在应用于内部类时的含义必须记住内部类的对象默认持有创建它的那个封装类的一个对象的句柄然而假如我们说一个内部类是static的这种说法却是不成立的static内部类意味着
由于内部类构建器必须同封装类对象的一个句柄联系到一起所以从一个内部类继承的时候情况会稍微变得有些复杂这儿的问题是封装类的秘密句柄必须获得初始化而且在衍生类中不再有一个默认的对象可以连接解决这个问题
至此我们已基本理解了内部类的典型用途对那些涉及内部类的代码通常表达的都是单纯的内部类非常简单且极易理解然而内部类的设计非常全面不可避免地会遇到它们的其他大量用法——假若我们在一个方法甚至一个任意的