Java类高级特性之静态内部类
来源:互联网 发布:初级程序员 编辑:程序博客网 时间:2024/06/05 06:17
一、 在内部类前添加修饰符static,这个内部类就变为静态内部类。一个静态内部类中可以声明static成员,但是在非静态内部类中不可以声明静态成员。静态成员内部类有一个最大的特点,就是不可以使用外部类的非静态成员,所以静态内部类在程序开发中比较少见。
可以这样认为,普遍的内部类对象隐式的在外部保存了一个引用,指向创建它的外部类对象,但如果内部类被定义为static时,它应该具有更多的限制。静态内部类具有以下两个特点:
(1)创建静态内部类的对象,不需要其外部类的对象。
(2)不能从静态内部类的对象中访问非静态外部类的对象。
例如:定义一个静态内部类StaticInnerClass
public class StaticInnerClass{ int x=100; static class Inner{ void doitInner(){ systerm.out.printin("外部类"+x); //调用外部类的成员变量X,<span style="color:#FF0000;">非法</span> } }}
二、静态内部类的应用:进行程序调试时,如果在每一个Java文件中都设置一个主方法,将出现很多额外代码,而程序本身并不需要这些主方法,为了解决这个问题,可以将主方法写入静态内部类中。
实例:在静态内部类中定义主方法,并访问内部类中的方法。
public class StaticInnerClass {static int x = 100;static class Inner {static void doit(){System.out.println("静态内部类中的方法调用外部类的成员变量x="+x); //调用外部类的成员变量x}public static void main(String args[]){//定义主方法doit();//访问内部类的方法}}}
运行结果如下所示:
静态内部类中的方法调用外部类的成员变量x=100如果编译上面的类,将编译生成一个名称为StaticInnerClass$Inner的独立类(静态内部类)和一个StaticInnerClass类(外部类),只要使用Java StaticInnerClass$Inner就可以运行主方法中的内容,这样当测试完成需要将所有的.class文件打包时,只要删除StaticInnerClass$Inner独立类(静态内部类)即可。
静态内部类的应用:静态内部类求极值
创建一个MaxMin类,再给类中定义一个静态内部类Result,然后在Result类中定义两个浮点型属性,一个是Max,一个是Min,再用构造函数将其初始化,并提供getXXX()方法来获得这两个值。最后定义一个静态方法getResult(),该方法的返回值是Result类型,这样既可以保存最大值,又保存了最小值。
package neibulei;import javax.xml.transform.Result;public class MaxMin {public static class Result {private double max;private double min;public Result(double max,double min){this.max = max;this.min = min;}public double getMax(){return max;}public double getMin(){return min;}}public static Result getResult(double[] array) {double max = Double.MIN_VALUE;double min = Double.MAX_VALUE;for(double i:array){if(i>max){max = i;}if(i<min){min = i;}}return new Result(max, min);}}
package neibulei;public class TestMaxMin {public static void main(String[] args){double[] array = new double[5];for(int i=0;i<array.length;i++){array[i]=100*Math.random();}System.out.println("源数组:");for(int i=0;i<array.length;i++){System.out.println(array[i]);}System.out.println("最大值:"+MaxMin.getResult(array).getMax());System.out.println("最小值:"+MaxMin.getResult(array).getMin());}}
运行结果如下:
源数组:4.73374227443450546.1554145828966716.5765332611123858.64590350796718.028611156283494最大值:58.6459035079671最小值:4.733742274434505
0 0
- Java类高级特性之静态内部类
- Java高级特性之---内部类
- java.类的高级特性.内部类
- 高级类特性----内部类
- Java高级特性之继承一个内部类
- Java高级特性之new一个内部类
- java学习之路 之 高级类特性2-类的成员之五:内部类
- Java内部类之静态内部类
- 面向对象高级特性===Java静态内部类、匿名内部类、成员式内部类和局部内部类
- Java中类的高级特性——内部类
- java内部类之成员内部类、静态内部类
- Java静态内部类特性详解
- Java之静态内部类
- Java之静态内部类
- java之静态内部类
- 【学习总结】java高级特性之四种JAVA内部类总结
- java内部类回顾之静态内部类
- Java内部类三部曲之静态内部类
- 九度OJ题目1491:求1和2的个数
- Java多线程下的生产者消费者模式
- Cordova环境的搭建
- Centos7系统Redis的安装与配置
- 第一次机房收费系统【总结】——概括
- Java类高级特性之静态内部类
- SVN命令使用详解
- 1016: 写出来吧
- HDOJ 2841 Visible Trees
- zzulioj1913: 小火山的计算能力
- 【微信平台】艺萌管家APP技术总结(三)——上传和显示图片
- Java Jvm运行机制原理
- hibernate中inverse属性用法解析
- IP地址转换为unsigned long(函数inet_addr和inet_aton)