博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中的内部类(一)静态内部类
阅读量:5451 次
发布时间:2019-06-15

本文共 1881 字,大约阅读时间需要 6 分钟。

Java中的静态内部类:在定义的内部类前加static修饰符,此时的内部类就是静态内部类。通过一个例子来了解静态内部类都有哪些特点。

1 public class Outer { 2     //定义一个实例变量和一个静态变量 3     private int a; 4     private static int b; 5     //定义一个静态方法和一个非静态方法 6     public static void say(){} 7     public void test(){ 8         //在外部类中调用内部类的属性和方法 9         Outer.Inner.c = 1;            //可以通过静态内部类的全类名来调用静态内部类的静态属性(外部类名.静态内部类名.属性)10         Outer.Inner.go();            //可以通过静态内部类的全类名来调用静态内部类的静态方法(外部类名.静态内部类名.方法)11         //Outer.Inner.walk();        //不能通过类静态内部类的全类名来调用内部类的非静态属性和方法12         Inner inner = new Inner();13         inner.d = 1;14         inner.walk();                    //可以通过创建内部类实例来调用静态内部类的非静态属性和方法15     }16     //静态内部类17     public static class Inner{18         //在静态内部类中定义一个静态变量和一个实例变量19         static int c;20         int d;21         //定义一个匿名代码块和一个静态代码块22         {}    23         static{}24         //定义一个静态方法和一个普通方法25         public static void go(){}26         public void walk(){27             //在静态内部类中调用外部类的属性和方法28             int f = b;                     //可以直接调用外部类的静态属性29             say();                        //可以直接调用外部类的静态方法30             //int e = a;                 直接调用外部类的非静态属性出错编译出错31             //test();                    直接调用外部类的非静态方法时编译出错32             Outer outer = new Outer();33             int e = outer.a;            //可以通过创建外部类实例来调用外部类的非静态属性34             outer.test();                //可以通过创建外部类实例来调用外部类的非静态方法35         }36     }37 }

总结:1、静态内部类中可以写哪些内容

   1)匿名代码块

   2)静态代码块

   3)静态变量和非静态变量

   4)静态方法和非静态方法

注意:不能在静态内部类中写抽象方法

   2、外部类如何调用静态内部类中的属性和方法

   1)外部类可以通过创建静态内部类实例的方法来调用静态内部类的非静态属性和方法

   2)外部类可以直接通过“ 外部类.内部类.属性(方法)” 的方式直接调用静态内部类中的静态属性和方法

   3、静态内部类如何调用外部类的属性和方法 

   1)静态内部类可以直接调用外部类的静态属性和方法

   2)静态内部类可以通过创建外部类实例的方法调用外部类的非静态属性和方法

   4、如何创建静态内部类实例

   1)在非外部类中:外部类名.内部类名 name = new 外部类名.内部类名();

   2)在外部类中:内部类名 name = new 内部类名();

转载于:https://www.cnblogs.com/heavenplus/p/9451181.html

你可能感兴趣的文章
【恐怖的数组模拟】Secret Poems - HihoCoder - 1632
查看>>
大规模机器学习
查看>>
EasyPlayerPro(Windows)流媒体播放器开发之接口设计
查看>>
寻找数组中子数组和的最大值
查看>>
如何系统的进入大数据领域,学习路线是什么?
查看>>
COLLATE Chinese_PRC_CI_AS
查看>>
PHP中面对过程的冗余是什么?
查看>>
函数----函数重载,特殊用途语言特性,函数匹配,函数指针
查看>>
Hive数据查询
查看>>
在vue2框架中,使用背景图片时,在build压缩代码环节图片找不到路径
查看>>
[转]android中最好的瀑布流控件PinterestLikeAdapterView
查看>>
算法面经之百度
查看>>
JavaWeb基础知识第三部分
查看>>
java并发编程系列一、多线程
查看>>
parseInt的源码阅读
查看>>
不定期更新的毒鸡汤
查看>>
OpenCV数字图像处理(1) 总记
查看>>
接口和类
查看>>
jfarme
查看>>
学习中的小笔记
查看>>