A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

李珍

注册黑马

  • 黑马币:0

  • 帖子:5

  • 精华:0

有谁可以解释一下呢

3 个回复

倒序浏览
完全可以。如果不是静态内部类,那没有什么限制!

如果你把静态嵌套类当作内部类的一种特例,那在这种情况下不可以访问外部类的普通成员变量,而只能访问外部类中的静态成员,例如,下面的代码:

class Outer

{

   static int x;

   static class Inner

   {

         void test()

         {

               syso(x);

         }

   }

}

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
蒋映辉 + 1
李珍 + 2 赞一个!

查看全部评分

回复 使用道具 举报
内部类可以任意调用其他包的类,方法如下
  1. package Heima001_DumpAndDown100;

  2. import Heima001_DumpAndDown200.Test2;


  3. public class Test {
  4.         public static void main(String[] args)  {
  5.                 System.out.println("*****************************");
  6.                 System.out.println("我只要调用Outer");
  7.                 new Outer();
  8.                 System.out.println("*****************************");
  9.                 System.out.println("我要使用内部类");
  10.                 new Outer("我要使用内部类");
  11.                 System.out.println("*****************************");
  12.                 System.out.println("我要使用内部类并调用其他包的类");
  13.                 new Outer("我要使用内部类","并调用其他包的类");
  14.                 System.out.println("*****************************");
  15.         }
  16. }

  17. class Outer{
  18.         private String s;
  19.         private String s2;
  20.        
  21.         public Outer(String s) {
  22.                 new Inner();
  23.         }
  24.        
  25.         public Outer(String s, String s2) {
  26.                 new Inner(s);
  27.         }


  28.         public String getS() {
  29.                 return s;
  30.         }

  31.         public void setS(String s) {
  32.                 this.s = s;
  33.         }

  34.         public Outer() {
  35.                 System.out.println("Outer被调用了");
  36.         }
  37.        
  38.         class Inner{
  39.                 private String s;
  40.                
  41.                
  42.                 public Inner(String s) {
  43.                         System.out.println("内部类被调用了");
  44.                         Test2 test2= new Test2();
  45.                 }

  46.                 public Inner() {
  47.                         System.out.println("内部类被调用了");                       
  48.                 }
  49.                
  50.         }
  51. }
复制代码
其他包的类:
  1. package Heima001_DumpAndDown200;


  2. public class Test2 {
  3.         int t2;
  4.         public Test2(int t2) {
  5.                 super();
  6.                 this.t2 = t2;
  7.         }
  8.         public int getT2() {
  9.                 return t2;
  10.         }
  11.         public void setT2(int t2) {
  12.                 this.t2 = t2;
  13.         }
  14.         public Test2() {
  15.                 System.out.println("另外包的Test2类被调用了");
  16.         }
  17. }

复制代码
输出结果:

*****************************
我只要调用Outer
Outer被调用了
*****************************
我要使用内部类
内部类被调用了
*****************************
我要使用内部类并调用其他包的类
内部类被调用了
另外包的Test2类被调用了
*****************************

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
知道为什么定义内部类么?就是为了方便引用外部类的成员呀
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马