java 中我遇到的关于内部类的难题
主类的一个内部类怎样才能引用主类以外的类?? --------------------编程问答-------------------- 1 public class MainClass {2 public InnerClass getInnerClass() {
3 return new InnerClass();
4 }
5
6 public class InnerClass {
7 public String name = "name";
8
9 public String getName() {
10 return name;
11 }
12
13 public void setName(String name) {
14 this.name = name;
15 }
16 }
17 }
1 public class CheckClass {
2 public static void main(String[] args) {
3 MainClass mainClass = new MainClass();
4 System.out.println(mainClass.getInnerClass().getName());
5 }
6 }\
这样就调用了主类之外的类了 --------------------编程问答-------------------- 先定义一个被内部类调用的类C,放在package c中
package c ;
public class C {
public void printC(){
System.out.println("**C**") ;
}
}
再定义一个包含内部类的类A,含两个内部类B,D,放在package a中,并且得导入c包
package a ;
import c.* ;
//import c.C ;
public class A {
class B {
public void printB(){
System.out.println("**B**") ;
new C().printC() ;
new D().printD() ;
}
}
class D {
public void printD(){
System.out.println("**D**") ;
}
}
public void printA(){
System.out.println("**A**") ;
}
public static void main(String[] args){
new A().printA() ;
new A().new B().printB() ;
}
}
之后进行编译,运行...如下
F:\Hello World\temp>javac -d . *.java
F:\Hello World\temp>java a.A
**A**
**B**
**C**
**D** --------------------编程问答-------------------- class A
{
class B
{
public void dosth()
{
A a = A.this;
}
} 虽然没试但是肯定可以 --------------------编程问答--------------------
public class A {
public void show() {
System.out.println("This is A.");
}
}
public class Outer {--------------------编程问答-------------------- 2 public InnerClass getInnerClass() {
public class Inner{
public void show(){
System.out.println("new A...");
A a = new A();
a.show();
System.out.println("This is Inner show()..");
}
}
public static void main(String[] args) {
Outer o = new Outer();
Inner i = o.new Inner();
i.show();
}
}
3 return new InnerClass();
4 } 5
这个地方出错,return不能返回对象(new InnerClass) --------------------编程问答-------------------- 永和九年的源码可以,,不过我试了在同一个包内也行。感激不尽,虽然想给你积分,可惜咱现在一个子都没有了。。还是,多谢了! --------------------编程问答-------------------- 内部类最好别访问主类以外的类,如果有需要,还是不要使用外部类好 --------------------编程问答--------------------
在一个包中当然可以咯,包的其中一个功能就是允许文件重名,而且在之后你用到的不只会是一个包中的东西。
还有,我来这不是想要你积分的,呵呵... --------------------编程问答--------------------
是要用以外的类创建对象吗?
如果是这样的话 可以这样做 主类持有以外类的对象的引用(说白了 就是拥有以外类的一个实例) 内部类可以访问到这个引用(实例) 并可以对其进行操作 因为内部类可以访问外部类的任意成员变量和方法
没什么难度吧
补充:Java , Java SE