黑马程序员技术交流社区
标题:
请问我这道基础题算完成了么?
[打印本页]
作者:
Mr_Free
时间:
2013-7-18 14:17
标题:
请问我这道基础题算完成了么?
本帖最后由 杨兴庭 于 2013-7-18 17:50 编辑
package com.itheima;
/**
* 第6题:创建一个包含有private的属性和private方法的类。
* 然后创建一个内部类,它有一个方法可用来修改外部类的属性,并调用外部类的方法。
* 在外部类的另一个方法中,创建此内部类的对象,并且调用它的方法。
* @author Administrator
*
*/
public class Test6 {
public static void main(String[] args){
Outer out =new Outer();//创建外部类对象
out.function(67);//修改外部类属性
}
}
class Outer{//外部类
private int x = 5;//私有属性
private static void method(){//外部类私有方法
System.out.println("private_method");
}
class Inner{
public void method(){
System.out.println("InnerMethod");//内部类方法
}
public void function(int x){
Outer.method();//内部类调用外部类方法
Outer.this.x= x;//修改外部类属性
System.out.println(Outer.this.x);//输出外部类属性
}
}
public void function(int x){
Inner in = new Inner();//创建内部类对象
in.method();//调用内部类方法
in.function(x);//调用内部类方法
}
}
复制代码
对于题目中的修改属性不太明白,请大家帮我看看,我这样做算符合要求么? x现在我修改了一下
作者:
付龙
时间:
2013-7-18 14:26
你这道题我做过,在答题的时候不能光写代码,还要写注释的,不然哪有分
附上我的注释
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的值
}
}
作者:
付龙
时间:
2013-7-18 14:28
把类名改成Text5 不然我的代码会报错
作者:
Mr_Free
时间:
2013-7-18 14:40
本帖最后由 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:18
本帖最后由 Mr_Free 于 2013-7-18 17:21 编辑
liukunaitasa 发表于 2013-7-18 16:16
我这也有个代码,不知道有没有问题:
我改了下我代码,发现和你的差不多,不过你的修改外部类的方法怎么没有能修改外部类属性呢?只是做了一个传值
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2