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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭利超 高级黑马   /  2013-4-2 21:54  /  1514 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郭利超 于 2013-4-2 23:03 编辑

创建一个包含有private的属性和private方法的类。然后创建一个内部类,它有一个方法可用来修改外部类的属性,并调用外部类的方法。在外部类的另一个方法中,创建此内部类的对象,并且调用它的方法.

弄了好久脑袋转不过来弯了  求大神解析!

11 个回复

正序浏览
  1. public class Test6 {
  2.        
  3.         public static void main(String []args){
  4.                 OutClass oc = new OutClass();
  5.                 oc.newClass();
  6.         }
  7. }
  8. class OutClass
  9. {
  10.         /*内部类*/
  11.         class InClass
  12.         {
  13.                 public void setName(){
  14.                         /*修改外部类属性*/
  15.                         name = "czbk";
  16.                         /*调用外部类方法*/
  17.                         printName();
  18.                 }
  19.         }
  20.         /*外部类属性name*/
  21.         private String name = "liang";
  22.         /*外部类方法*/
  23.         public void printName(){
  24.                 System.out.println(name);
  25.         }
  26.         /*外部类方法中创建内部类对象*/
  27.         public void newClass(){
  28.                 InClass in = new InClass();
  29.                 in.setName();
  30.         }
  31. }
复制代码
回复 使用道具 举报
郭利超 发表于 2013-4-2 22:58
this.i=out.i;  请问你的this.i 是哪个i啊    这句是不是把外部i的值赋给内部了?   运行结果是8   这个内 ...
  1. class OutDemo
  2. {
  3.         private int i=2;
  4.        
  5.         private void b()
  6.         {
  7.                 System.out.println("test");
  8.         }
  9.         void c()
  10.         {
  11.                 Inner in = new Inner();
  12.                 in.a();
  13.         }
  14.        
  15.         class Inner
  16.         {
  17.         int i = 6;
  18.                 void a()                                                     //
  19.                 {
  20.                         OutDemo out = new OutDemo();
  21.                         out.i = i;                                       //此处修改
  22.                         System.out.println(i);
  23.                         out.b();
  24.                 }
  25.         }
  26.        
  27.         public static void main(String args[])
  28.         {
  29.                 new OutDemo().c();
  30.         }
  31. }
复制代码
这样是不是,就符合要求了呢
回复 使用道具 举报
本帖最后由 吴林飞 于 2013-4-2 23:50 编辑
  1. class Outer1
  2. {
  3.         //创建包含private的属性
  4.         private int x = 3;
  5.         //创建包含private的方法
  6.         private void method_1()
  7.         {
  8.                 System.out.println("method_1运行。。。"+x);
  9.         }
  10.         //创建内部类
  11.         class Inner
  12.         {
  13.                 void method_2()
  14.                 {
  15.                         //修改外部类属性,并调用外部类方法
  16.                         int x = 5;
  17.                         System.out.println("method_2运行。。。"+x);
  18.                         method_1();
  19.                 }
  20.         }
  21.         //创建内部类对象并调用方法
  22.         void function()
  23.         {
  24.                 Inner in= new Inner();
  25.                 in.method_2();
  26.         }
  27. }
  28. class Test5
  29. {
  30.         public static void main(String[] args)
  31.         {
  32.                 new Outer1().function();
  33.         }       
  34. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 王杰123 于 2013-4-2 23:36 编辑


public class People {

        private String name;
       
        private double money;
       
        private int age;
       
        public double getMoney() {
                return money;
        }

        public void setMoney(double money) {
                this.money = money;
        }

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

        public int getAge() {
                return age;
        }

        public void setAge(int age) {
                this.age = age;
        }


       
        class Heart{
                //内部类可以直接访问外部类的成员变量,也可以修改。
                double s = hasMoney(money);//内部类可以直接访问外部类的成员变量,也可以修改。
                //功能:心跳
                void run(){
                        System.out.println("心脏在跳动,因为有"+s+"元");
                }
               
        }
       
        public void show(){
                //在外部类中建立内部类对象
                Heart heart =  new Heart();
                //在外部类中调用内部类方法
                heart.run();
        }
        //功能:有多少钱
        private double hasMoney(double money){
                return money;
        }
       
        public static void main(String[] args) {
               
                People people = new People();
                people.setMoney(100000);
                people.show();
               
        }

}

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
黑马_位志国 发表于 2013-4-2 22:32
创建一个包含有private的属性和private方法的类。然后创建一个内部类,它有一个方法可用来修改外部类的属性 ...

还是兄弟你的阅读性强
回复 使用道具 举报
赵喜平 发表于 2013-4-2 22:34
class OutDemo
{
        private int i=2;

this.i=out.i;  请问你的this.i 是哪个i啊    这句是不是把外部i的值赋给内部了?   运行结果是8   这个内部修改外部的值怎么体现的?
回复 使用道具 举报
class OutDemo
{
        private int i=2;
       
        private void b()
        {
                System.out.println("test");
        }
        void c()
        {
                Inner in = new Inner();
                in.a(8);
        }
       
        class Inner
        {
        int i;
                void a(int i)
                {
                        OutDemo out = new OutDemo();
                        this.i=out.i;
                        System.out.println(i);
                        out.b();
                }
        }
       
        public static void main(String args[])
        {
                new OutDemo().c();
        }
}


随便写的  仅供参考

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
创建一个包含有private的属性和private方法的类。然后创建一个内部类,它有一个方法可用来修改外部类的属性,并调用外部类的方法。在外部类的另一个方法中,创建此内部类的对象,并且调用它的方法.

实例:

class Outer{
        //外部类的私有成员
        private int num = 6;
        //内部类
        class Inner{
                public void function(){
                        num = 9;//修改外部类的属性
                        method();//调用外部类的方法
                }
        }
       
        public void show(){
                //创建内部类的对象,并调用该内部类中的方法
                new Inner().function();
        }
        //外部类的私有方法
        private void method(){
                System.out.println("num :: " + num);
        }
       
}

public class Test{
        public static void main(String[] args) {
                new Outer().show();
        }
}

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
  1. class 外部类{
  2. private 属性;
  3. private 方法();
  4. 外部类调用内部类的方法()
  5. {
  6.         内部类 xx = new 内部类();
  7.         xx.内部类方法();
  8. }
  9.         class 内部类{
  10.                 内部类方法()
  11.                 {
  12.                         外部类属性 = 修改属性;
  13.                         外部类方法();
  14.                 }
  15.         }
  16. }

  17. 大概就是这么个意思吧
复制代码

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报

  1. public class Test {
  2.        
  3.         private int myField = 0;

  4.         private void myMethod(){
  5.                 System.out.println("the method was invoked and myFiled = " + myField);
  6.         }
  7.        
  8.         class Inner{
  9.                
  10.                 public void innerMethod(){
  11.                         myField = 1;
  12.                         myMethod();
  13.                 }
  14.         }
  15.        
  16.         public static void main(String[] args) {
  17.                 Test test = new Test();
  18.                 Inner inner = test.new Inner();
  19.                 inner.innerMethod();
  20.         }
  21. }
复制代码

评分

参与人数 1黑马币 +3 收起 理由
张熙韬 + 3

查看全部评分

回复 使用道具 举报
我刚写个程序,觉得已经符合你的要求了,有点粗陋,只供参考:

class MethodDemo{
        private String name;
        private void show(){
                System.out.println("我被调用了,我的名字是:"+name);
        }
        class inner{
                public void change(){
                  name="king";
                  show();
                }
        }
        public  void addMethod(){
                new inner().change();
        }
}
public class Test {
        public static void main(String[] args) {
                new MethodDemo().addMethod();


        }


}
结果:我被调用了,我的名字是:king

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