黑马程序员技术交流社区
标题:
关于成员变量和内部类的问题,请教高手,
[打印本页]
作者:
探花
时间:
2014-3-26 22:02
标题:
关于成员变量和内部类的问题,请教高手,
有个问题是如果一个类里面给定义一个包含私有成员变量和函数,
在这个类里面定义一个内部类,在内部类函数中去访问外部成员变量,并调用外部函数。
然后再去在外部类函数中创建内部类对象,调用内部类函数。感觉有点晕,希望
有高手能给用个完整的程序做个演示,谢谢。
作者:
itpower
时间:
2014-3-26 22:19
public class Test5 {
public static void main(String[] args) {
}
}
class Outside{
private Integer integer = 88;
private void OoutMethod(){
System.out.println("外部类函数被调用咯 ");
Inside inside = new Inside();
inside.InMethod();
}
class Inside{
private void InMethod(){
Outside.this.OoutMethod();
System.out.println("外部类的私有成员integer="+Outside.this.integer);
}
}
}
复制代码
作者:
嘿~~
时间:
2014-3-26 22:22
我也在看内部类,就是匿名内部类书写有点烦,你这个问题很简单,手机没法写代码
作者:
宋超2356
时间:
2014-3-26 22:58
class Test {
public static void main(String [] args) {
Out out = new Out(); //创建外部类对象,有了外部类对象才可能有内部类
Out.In in = out.new In(); //创建内部类对象,因为是内部类,所以不可以直接创建,要通过外部类
}
}
class Out {
private String str = "外部成员变量";
protected void out() {
System.out.println("外部函数被访问了");
}
class In { //内部类,他可以直接访问外部类的成员变量,方法等..
String str = " 内部类变量";
In(){
Out.this.out(); //访问外部类 成员方法
String str =" 方法中变量";
System.out.println(Out.this.str+" "+this.str+" "+str); //外部类.this.名称 访问外部变量,内部类.this.名称 访问内部变量,变量名 访问方法中变量
}
}
}
复制代码
这样应该挺详细了吧.....
作者:
探花
时间:
2014-3-27 22:19
itpower 发表于 2014-3-26 22:19
嗯 很好,谢谢
作者:
探花
时间:
2014-3-27 22:20
宋超2356 发表于 2014-3-26 22:58
这样应该挺详细了吧.....
很详细,谢谢,
作者:
lovefmylgs
时间:
2014-5-1 16:43
public class Test5 { public static void main(String[] args) { } } class Outside{ private Integer integer = 88; private void OoutMethod(){ System.out.println("外部类函数被调用咯 "); Inside inside = new Inside(); inside.InMethod(); } class Inside{ private void InMethod(){ Outside.this.OoutMethod(); System.out.println("外部类的私有成员integer="+Outside.this.integer); } } }
作者:
大恶魔先森~
时间:
2014-5-1 18:26
本帖最后由 大恶魔先森~ 于 2014-5-1 18:35 编辑
class Outer//定义外部类
{
private int x=0;//私有成员变量
private void print()//私有函数
{
Inner in=new Inner();//定义内部类的对象
in.show();//调用内部类的方法
private void print()
{
System.out.println("Hello!");
}
class Inner//定义内部类
{
System.out.println(Outer.this.x);//访问外部类的x
Outer.this.print();//内部类中调用外部类函数
public void show()
{
System.out.println("Show!");
}
}
public static void main()
{
new Outer();
}
}
复制代码
作者:
大恶魔先森~
时间:
2014-5-1 18:36
大恶魔先森~ 发表于 2014-5-1 18:26
记住一点:内部类可以直接访问外部类中的成员,包括私有,是因为内部类中持有一个外部类的引用(外部类名.this)。而外部类要想访问内部类中的成员,必须建立内部类的对象。
作者:
renshu16
时间:
2014-5-1 19:47
内部类 外部类 的问题一直困扰着我,先顶,回来再仔细研究~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2