广

Java编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    java中关于内部类的使用详解

    2018-11-14 08:49:20 次阅读 稿源:互联网
    零七广告

    内部类访问规则

    •内部类可以直接访问外部类中的成员,包括私有。访问格式:外部类名.this
    •外部类要访问内部类必须创建内部类对象。
    •内部类在成员位置上,可以被成员修饰符修饰。
    代码如下:

    public class InnerClassDemo1 {
         public static void main(String[] args){
             Outer ou =new Outer();
             ou.method();// 4  3
             Outer.Inner oi =new Outer().new Inner();
             oi.function2();

         }

     }
     class Outer{
         private int x=3;
         class Inner{
             int x=4;
             void function1(){
                 System.out.println(x);
                 System.out.println(Outer.this.x);
             }
             void function2(){
                 Outer.this.method();
             }
         }
         public void method(){
             Inner in =new Inner();
             in.function1();
         }
     }

    静态内部类

    •内部类定义了静态成员,内部类必须是静态的。
    代码如下:

    /*
     注意:内部类定义了静态成员,内部类必须是静态的。

     */
     class InnerClassDemo2
     {
         public static void main(String[] args)
         {
             new Outer.Inner().function();//创建静态内部类对象
         }
     }
     class Outer
     {
         private static int x=5;
         static class Inner//静态内部类 只能访问外部类的静态成员
         {
             void function()
             {
                 System.out.println("inner:"+x);
             }
         }
     }

    局部内部类

    •内部类定义在局部时,可以直接访问外部类中的成员。
    •访问局部变量必须被final修饰。
    代码如下:

    /*
     内部类定义在局部时:可以直接访问外部类中的成员,因为还持有外类中的引用。
     但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量

     */

     class  InnerClassDemo3
     {
         public static void main(String[] args)
         {
             Outer out =new Outer();
             out.method(7);
         }
     }
     class Outer
     {
         int x=3;
         public void method(final int a)
         {
             class Inner
             {
                 void function()
                 {
                     System.out.println(a);
                 }
             }
             new Inner().function();
         }
     }

    匿名内部类

    •匿名内部类是内部类的简写格式。
    •匿名内部类的前提:内部类必须继承一个类或者实现接口。
    •匿名内部类不能创建构造函数。
    代码如下:

    /*
     匿名内部类
     1.匿名内部类其实就是内部类的简写格式
     2.定义匿名内部列的前提。
       内部类必须是继承一个类或者实现接口
     3.匿名内部类的格式:new 父类或者接口(){定义子类内容}
     */
     class InnerClassDemo4
     {
         public static void main(String[] args)
         {
             Demo d=new Demo()
             {
                 void show()
                 {
                     System.out.println("匿名内部类show方法");
                 }
                 void method()
                 {
                     System.out.println("匿名内部类method方法");
                 }
             }.show();
             d.method();
         }
     }
     abstract class Demo
     {
         abstract void show();
     }

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告