问答详情
源自:7-7 Java 中的静态内部类

静态内部类中可以定义静态方法吗?如果可以,怎样访问外部类中的非静态变量和静态变量及它所在的静态内部类中的不同变量?静态内部类中可以定义静态变量吗?如果可以外部类如何访问它呢?

  public class HelloWorld {    
     // 外部类中的静态变量score
     private static int score = 84;     
     // 创建静态内部类
     public  static  class SInner {
         // 内部类中的变量score
         int score = 91;      
         public static void show() {
             System.out.println("访问外部类中的score:" + HelloWorld.score  );
             System.out.println("访问内部类中的score:" + score);
         }
     }
     // 测试静态内部类
     public static void main(String[] args) {
         // 直接创建内部类的对象
         SInner si=new SInner();
         // 调用show方法
         si.show();
     }

提问者:www_ 2015-07-10 16:05

个回答

  • wswzh0329
    2015-10-04 20:37:22

    。。eclipse里面没有报错啊!

    package com.shiyan;


    public class Outer2 {

       static int score1=150;           //外部类的静态变量

       int score2=61;                   //外部类的普通变量

       

       public static class Inner{       //静态内部类Inner

      static int score1=89;          //静态内部类的静态变量

      int score2=88;               //静态内部类的普通变量

      

      public static void show(){        //静态内部类中的静态方法

      System.out.println(Outer.score1);

      System.out.println(new Outer().score2);//为什么不能用Outer.this.score2

      System.out.println(score1);

      System.out.println(new Inner().score2);//为什么不能直接用score2;

      }

       }

       //内部测试类

       public static void main(String[] args) {

    System.out.println(score1);

    System.out.println(new Outer().score2);

    // Inner.show();

    /*Inner in=new Inner();

    in.show();*/

    new Inner().show();

    }

      

    }

    输出:

    150

    62

    99

    62

    89

    88


  • 康振宁
    2015-07-10 17:56:09

    不能定义静态方法