黑马程序员技术交流社区

标题: 关于内部类的一道题,,不知道怎么继续往下写了,忘大家解... [打印本页]

作者: 黄佳    时间: 2012-10-12 09:36
标题: 关于内部类的一道题,,不知道怎么继续往下写了,忘大家解...
本帖最后由 黄佳 于 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);
                }
        }
}



作者: 张丽    时间: 2012-10-12 09:57
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
        }
}
}


作者: 徐梦侠    时间: 2012-10-12 10:38
内部类本来可以直接访问外部类中的成员,包括私有。之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式 外部类名.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();
     }
}

作者: 杨政    时间: 2012-10-12 11:50
这是刚做的基础测试题。
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.变量名




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2