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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Mr_Free 中级黑马   /  2013-7-18 14:17  /  1203 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-18 17:50 编辑
  1. package com.itheima;
  2. /**
  3. * 第6题:创建一个包含有private的属性和private方法的类。
  4. * 然后创建一个内部类,它有一个方法可用来修改外部类的属性,并调用外部类的方法。
  5. * 在外部类的另一个方法中,创建此内部类的对象,并且调用它的方法。
  6. * @author Administrator
  7. *
  8. */
  9. public class Test6 {
  10.         public static void main(String[] args){
  11.                 Outer out =new Outer();//创建外部类对象
  12.                 out.function(67);//修改外部类属性
  13.         }
  14. }
  15. class Outer{//外部类
  16.         private int x = 5;//私有属性
  17.         private static void method(){//外部类私有方法
  18.                 System.out.println("private_method");
  19.         }
  20.         class Inner{
  21.                 public void method(){
  22.                         System.out.println("InnerMethod");//内部类方法
  23.                 }
  24.                 public void function(int x){
  25.                         Outer.method();//内部类调用外部类方法
  26.                         Outer.this.x= x;//修改外部类属性
  27.                         System.out.println(Outer.this.x);//输出外部类属性
  28.                 }
  29.         }
  30.         public void function(int x){
  31.                 Inner in = new Inner();//创建内部类对象
  32.                 in.method();//调用内部类方法
  33.                 in.function(x);//调用内部类方法
  34.         }
  35.         
  36. }
复制代码
对于题目中的修改属性不太明白,请大家帮我看看,我这样做算符合要求么? x现在我修改了一下

5 个回复

倒序浏览
你这道题我做过,在答题的时候不能光写代码,还要写注释的,不然哪有分
附上我的注释
package com

public class ttt {
                private int x = 1;
       
        Inner function(){//返回一个 Inner类型 ,以便于调用Inner的方法
                return new Inner();
        }
       
        class Inner{//内部类
               
                public void method(Text5 t,int x){
                        t.x = x;
                       
                        System.out.println("修改后的x=" + x);
                        show();//内部类中调用外部类的方法
                        System.out.println("内部类的方法被调用");
                }
        }
       
        private void show(){//外部类的方法
                System.out.println("外部类的方法被调用");
        }
               
        public static void main(String[] args) {
               
                Text5.Inner in = new Text5().new Inner();//创建内部类的对象
                in.method( new Text5(), 2);//修改外部类的x的值
        }
}
回复 使用道具 举报
把类名改成Text5  不然我的代码会报错
回复 使用道具 举报
本帖最后由 Mr_Free 于 2013-7-18 15:00 编辑
付龙 发表于 2013-7-18 14:28
把类名改成Text5  不然我的代码会报错

哦,忘记写注释了,谢谢

       public void method(Text5 t,int x){
                        t.x = x;
                        
                        System.out.println("修改后的x=" + x);
我觉得这里是不是有问题啊?  打印X?

回复 使用道具 举报
本帖最后由 Mr_Free 于 2013-7-18 17:21 编辑
liukunaitasa 发表于 2013-7-18 16:16
我这也有个代码,不知道有没有问题:

我改了下我代码,发现和你的差不多,不过你的修改外部类的方法怎么没有能修改外部类属性呢?只是做了一个传值
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马