黑马程序员技术交流社区
标题:
内部类可以引用它的包含类的成员吗?有没有什么限制?
[打印本页]
作者:
李珍
时间:
2012-7-21 21:26
标题:
内部类可以引用它的包含类的成员吗?有没有什么限制?
有谁可以解释一下呢
作者:
刘海源
时间:
2012-7-21 21:30
完全可以。如果不是静态内部类,那没有什么限制!
如果你把静态嵌套类当作内部类的一种特例,那在这种情况下不可以访问外部类的普通成员变量,而只能访问外部类中的静态成员,例如,下面的代码:
class Outer
{
static int x;
static class Inner
{
void test()
{
syso(x);
}
}
}
作者:
黎健东
时间:
2012-7-21 22:23
内部类可以任意调用其他包的类,方法如下
package Heima001_DumpAndDown100;
import Heima001_DumpAndDown200.Test2;
public class Test {
public static void main(String[] args) {
System.out.println("*****************************");
System.out.println("我只要调用Outer");
new Outer();
System.out.println("*****************************");
System.out.println("我要使用内部类");
new Outer("我要使用内部类");
System.out.println("*****************************");
System.out.println("我要使用内部类并调用其他包的类");
new Outer("我要使用内部类","并调用其他包的类");
System.out.println("*****************************");
}
}
class Outer{
private String s;
private String s2;
public Outer(String s) {
new Inner();
}
public Outer(String s, String s2) {
new Inner(s);
}
public String getS() {
return s;
}
public void setS(String s) {
this.s = s;
}
public Outer() {
System.out.println("Outer被调用了");
}
class Inner{
private String s;
public Inner(String s) {
System.out.println("内部类被调用了");
Test2 test2= new Test2();
}
public Inner() {
System.out.println("内部类被调用了");
}
}
}
复制代码
其他包的类:
package Heima001_DumpAndDown200;
public class Test2 {
int t2;
public Test2(int t2) {
super();
this.t2 = t2;
}
public int getT2() {
return t2;
}
public void setT2(int t2) {
this.t2 = t2;
}
public Test2() {
System.out.println("另外包的Test2类被调用了");
}
}
复制代码
输出结果:
*****************************
我只要调用Outer
Outer被调用了
*****************************
我要使用内部类
内部类被调用了
*****************************
我要使用内部类并调用其他包的类
内部类被调用了
另外包的Test2类被调用了
*****************************
作者:
刘笑
时间:
2012-7-21 22:28
知道为什么定义内部类么?就是为了方便引用外部类的成员呀
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2