当前位置:编程学习 > JAVA >>

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 {

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();
}
}
--------------------编程问答--------------------     2     public InnerClass getInnerClass() {
  3         return new InnerClass();
  4     }  5
 这个地方出错,return不能返回对象(new InnerClass) --------------------编程问答-------------------- 永和九年的源码可以,,不过我试了在同一个包内也行。感激不尽,虽然想给你积分,可惜咱现在一个子都没有了。。还是,多谢了! --------------------编程问答-------------------- 内部类最好别访问主类以外的类,如果有需要,还是不要使用外部类好 --------------------编程问答--------------------
引用 6 楼 u010009673 的回复:
永和九年的源码可以,,不过我试了在同一个包内也行。感激不尽,虽然想给你积分,可惜咱现在一个子都没有了。。还是,多谢了!

在一个包中当然可以咯,包的其中一个功能就是允许文件重名,而且在之后你用到的不只会是一个包中的东西。
还有,我来这不是想要你积分的,呵呵... --------------------编程问答--------------------
引用 楼主 u010009673 的回复:
主类的一个内部类怎样才能引用主类以外的类??


是要用以外的类创建对象吗?

如果是这样的话 可以这样做 主类持有以外类的对象的引用(说白了 就是拥有以外类的一个实例) 内部类可以访问到这个引用(实例) 并可以对其进行操作 因为内部类可以访问外部类的任意成员变量和方法

没什么难度吧
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,