黑马程序员技术交流社区

标题: 有关内部类 [打印本页]

作者: 崔一恒    时间: 2013-7-14 22:27
标题: 有关内部类
本帖最后由 崔一恒 于 2013-7-15 22:40 编辑

“创建一个包含有private的属性和private方法的类。然后创建一个内部类,它有一个方法可用来修改外部类的属性,并调用外部类的方法。在外部类的另一个方法中,创建此内部类的对象,并且调用它的方法。”其中“它有一个方法可用来修改外部类的属性”这句话该怎么理解

作者: 白堇翎    时间: 2013-7-14 22:36
本帖最后由 白堇翎 于 2013-7-14 22:37 编辑

我写一段伪代码来帮助你理解好了
  1. class 外部类{
  2. int 外部元素;
  3. void 外部函数(){}
  4. class 内部类{
  5. void 请用此方法调用外部函数(){}
  6. void 请用此方法修改外部元素(){}
  7. void 内部函数(){}
  8. }
  9. 内部类 内部类1 = new 内部类;//实际上代码不能这样写 我这样写只是帮助你理解
  10. }
复制代码

作者: 董凯    时间: 2013-7-14 22:52
简单写个例子作参考吧~~
=====================

public class Test9 {
private String a="外部属性";
private void A(){
System.out.println(a);
}

B b(){
return new B();
}

class B {
void fun(Test9 t,String s){
t.a=s;
}
}

public static void main(String[] args){
Test9 t= new Test9();
t.A();
t.b().fun(t, "内部类修改外部类属性");
t.A();
}
}
================================
输出结果:

外部属性
内部类修改外部类属性
作者: 一木榜公    时间: 2013-7-14 23:14
  1. /*
  2. 内部类有一个方法可用来修改外部类的属性?

  3. 针对以下代码,可以把这句理解为:
  4. 内部类Inner中setName()方法可以修改,外部类Person的name属性

  5. */

  6. class Person
  7. {
  8.         private String name;  //外部类private属性
  9.         private int   age;

  10.         class Inner //内部类
  11.         {
  12.                
  13.                                                   
  14.                 //" 它有一个方法可用来修改外部类的属性?"
  15.                 //修改外部类的name属性的内部类方法(模拟以上你的疑问)
  16.                 public void setName(String name)
  17.                 {
  18.                         Person.this.name = name;             //修改外部类的name属性
  19.                         sop(name);                           //内部类调用外部类的方法
  20.                        
  21.                 }
  22.         }
  23.        
  24.         //调用内部类的方法修改name属性
  25.         public void set(String name)  
  26.         {
  27.                 Inner in= new Inner();
  28.                 in.setName(name);
  29.         }
  30.        
  31.         /*
  32.         ** 输出函数
  33.         */
  34.         public void sop(String s)
  35.         {
  36.                 System.out.println(s);
  37.         }

  38. }

  39. class Test
  40. {
  41.         public static void main(String[] args)
  42.         {
  43.                 Person p = new Person();

  44.                  p.set("张三");
  45.        
  46.         }
  47. }

  48. /* 编译结果:是
  49. E:\JAVA1306>java Test
  50. 张三
  51. */
复制代码





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