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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黄佳 于 2012-10-12 14:05 编辑

package com.itheima;

        /*
         * 8、 创建一个包含实例内部类的类,外部类中定义一个名为str的String字符串并初始化任意值,
         * 在内部类中定义跟外部类同种类型且同名的变量,并在内部类中定义一个方法,分别打印外部类和内部类的变量。
         */

public class Test8 {
        
        public static void main(String[] args) {

                String str = "outer";
                System.out.println(str);
               
               
        }


        class Inner{
                String str = "inner";
                        
                void show(){
                        System.out.println(str);
                }
        }
}


评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

3 个回复

正序浏览
这是刚做的基础测试题。
public class Test6
{
        public static void main(String[] args)
        {
                Outer01 out01 = new Outer01();                 //创建外部类对象

                Outer01.Inner01 in01 = out01.new Inner01();      //创建内部类对象

                in01.show();                         //调用show()方法分别打印外部str和内部str
        }
}
class Outer01
{
        String str = "外部String";

        class Inner01
        {
                String str ="内部String";

                void show()
                {
                        Test7.sopln(Outer01.this.str);    //打印外部str
                        Test7.sopln(str);                   //打印内部str
                }
        }
}
//Test7.sopln()是一个打印方法。
内部类和外部类变量同名,打印内部变量直接用变量名,打印外部变量用 外部类名.this.变量名

评分

参与人数 1黑马币 +1 收起 理由
黄佳 + 1 很给力!

查看全部评分

回复 使用道具 举报
内部类本来可以直接访问外部类中的成员,包括私有。之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式 外部类名.this。这时若内部类和外部类的成员变量同类型且同名,就需要把外部类的引用加上。
//创建一个外部类
class Outer{
    //创建一个字符串变量,并初始化值
    String str="I'm Outer";
    //创建一个内部类
    class Inner{
         //创建一个字符串同名变量,并初始化不同的值
         String str="I'm Inner";
        //定义一个函数,打印外部类中的str
        void priOuter(){
              System.out.println("Outer: "+Outer.this.str);
        }
        //定义一个函数,打印内部类中的str
         void priInner(){
              System.out.println("Inner: "+str);
         }
    }
}
public class Test8 {
     public static void main(String[] args) {
     //建立一个内部类对象
     Outer.Inner  outAndIn=new Outer().new Inner();
     //打印外部类中的str
     outAndIn.priOuter();
     //为了更容易区分打印分割线
     System.out.println("----------------");
     //打印内部类中的str
     outAndIn.priInner();
     }
}

评分

参与人数 1黑马币 +1 收起 理由
黄佳 + 1 赞一个!

查看全部评分

回复 使用道具 举报
public class Test8 {
public static void main(String[] args) {
      Outer out=new Outer();
      out.in.show();
      
      
        
}
}
class Outer{

public static String str = "outer";
    Inner in=new Inner();
class Inner{
       public  String str = "inner";
               
        void show(){
                System.out.println(Outer.str);
                System.out.println(Outer.Inner.this.str);
这个拟看看是不是你要的结果。输出结果是
Outer
Inner
        }
}
}

评分

参与人数 2技术分 +1 黑马币 +5 收起 理由
黄佳 + 5 赞一个!是我要的结果
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马