标题:内部类问题
只看楼主
kl277702504
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-7-23
 问题点数:0 回复次数:4 
内部类问题

public class InnerClassTest{
private int i=20;
class Inner8{
private int j=111;
int i=10;
void use(){
j=this.i;
}
}
public void useInner(){
Inner8 l=new Inner8();
System.out.println("j="+l.j);
System.out.println("i="+i);
}

public static void main(String []args){
InnerClassTest x=new InnerClassTest();
InnerClassTest.Inner8 inner=x.new Inner8();
inner.use();
x.useInner();
}
}

运行结果是:j=111 i=20 (为什么use()方法里不能改变j值呢)

搜索更多相关主题的帖子: 部类 
2007-08-28 21:04
jdk2006
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2007-5-12
得分:0 

/*
* InnerClassTest.java
*
* Created on 2007年8月29日, 下午10:42
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

/**
*
* @author new
*/
public class InnerClassTest {

/** Creates a new instance of InnerClassTest */
public InnerClassTest() {
}
private int i=20;
class Inner8{
private int j=111;
int i=10;
void use(){
j=i;
}
}
public void useInner(){
Inner8 l=new Inner8();
l.use();//调用内部类的方法
System.out.println("j="+l.j);
System.out.println("i="+i);
}

public static void main(String []args){
InnerClassTest x=new InnerClassTest();
InnerClassTest.Inner8 inner=x.new Inner8();
inner.use();
x.useInner();
}


}


2007-08-28 22:47
J华
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-7-2
得分:0 
楼上正解 ``另外说明下: 因为内部类不能有静态成员,如果j为static 你的就OK....但这是不允许的 可以把j放在顶层然后static.
2007-08-28 23:36
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
以下是引用kl277702504在2007-8-28 21:04:38的发言:

public class InnerClassTest{
private int i=20;
class Inner8{
private int j=111;
int i=10;
void use(){
j=this.i;
}
}
public void useInner(){
Inner8 l=new Inner8();//无论你以前怎么 改变,这里打印出的都是一个刚刚new出来的对象里面的值,你要打印出自己的值,那么改成这样就可以了
System.out.println("j="+this.j);
System.out.println("i="+this.i);//这是打印出内部内里面的i
System.out.println("out i="+InnerClassTest.this.i);//这是打印出内部类所在的外部类的i
System.out.println("j="+l.j);
System.out.println("i="+i);
}

public static void main(String []args){
InnerClassTest x=new InnerClassTest();
InnerClassTest.Inner8 inner=x.new Inner8();
inner.use();
x.useInner();
}
}

运行结果是:j=111 i=20 (为什么use()方法里不能改变j值呢)


可惜不是你,陪我到最后
2007-08-28 23:48
kl277702504
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-7-23
得分:0 
谢谢楼上朋友。。我基本上清楚了哈
2007-08-29 21:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-166111-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.900082 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved