当前位置: 技术问答>java相关
挑战高手:JAVA中类的嵌套。
来源: 互联网 发布时间:2015-07-11
本文导语: 在JAVA中,类中嵌套的类有二种,静态和非静态, 二种有着很大的不同, 偶还是似懂非懂! 求高手指点迷津, 定当高分相送! | 建议看第7章第6节。 对这个问题讲得很详细。 | ...
在JAVA中,类中嵌套的类有二种,静态和非静态,
二种有着很大的不同,
偶还是似懂非懂!
求高手指点迷津,
定当高分相送!
二种有着很大的不同,
偶还是似懂非懂!
求高手指点迷津,
定当高分相送!
|
建议看第7章第6节。
对这个问题讲得很详细。
对这个问题讲得很详细。
|
内部类!
特点:静态内部类被编译到一个单独的 .class 文件中,这个文件独立于它的外部类。静态内部类根据定义可以访问外部类的保护域和私有域。
小心对待!
一般测试时使用。
特点:静态内部类被编译到一个单独的 .class 文件中,这个文件独立于它的外部类。静态内部类根据定义可以访问外部类的保护域和私有域。
小心对待!
一般测试时使用。
|
静态类中所有的变量和方法在内存中只会有一个实例,不管你的类有多少实例。
如果是内部静态类的话,静态的理由就是你的内部类可以不需要外部类的实例就可以创建。就像类中的静态方法一样,如你可以new Rectangle2D.Double(..);
Double为Rectangle2D的内部类。
而非静态,需要这样创建rect.new Double(...);//rect为Rectangle2D的实例
就是先要有一个外部类的实例,才能创建内部类。
典型的设计就是外部类是一个抽象父类,内部类为静态子类,只有方法,没有变量(变量都在父类中定义,否则所有的内部类实例共同拥有一个变量)。就像java.awt.geom.Rectangle2D.java
如果是内部静态类的话,静态的理由就是你的内部类可以不需要外部类的实例就可以创建。就像类中的静态方法一样,如你可以new Rectangle2D.Double(..);
Double为Rectangle2D的内部类。
而非静态,需要这样创建rect.new Double(...);//rect为Rectangle2D的实例
就是先要有一个外部类的实例,才能创建内部类。
典型的设计就是外部类是一个抽象父类,内部类为静态子类,只有方法,没有变量(变量都在父类中定义,否则所有的内部类实例共同拥有一个变量)。就像java.awt.geom.Rectangle2D.java