标签: outer-classes

Java内部类扩展了外部类

Java中存在一些内部类扩展外部类的情况.

例如,java.awt.geom.Arc2D.Float是java.awt.geom.Arc2D的内部类,并且还扩展了Arc2D.(参见http://download.oracle.com/javase/6/docs/api/java/awt/geom/Arc2D.Float.html)

此外,sun.org.mozilla.javascript.internal.FunctionNode.Jump扩展了sun.org.mozilla.javascript.internal.Node,它是FunctionNode的超类.(抱歉......找不到javadoc的链接)

对我来说,这似乎很奇怪.你能创建这些吗?

new Arc2D.Float.Float() //n.b. I couldn't get this to compile in Intellij IDEA;

new FunctionNode.Jump.Jump.Jump(1); // I could get this to compile
Run Code Online (Sandbox Code Playgroud)

将子类嵌套为超类的内部类有什么作用?

我想知道是否要访问超类中的某些东西,但是如果你想访问父类中的任何变量/方法,你可以使用

super.variable;
Run Code Online (Sandbox Code Playgroud)

要么

super.method();
Run Code Online (Sandbox Code Playgroud)

编辑1:jjnguy建议将逻辑保持在同一个地方.在这种情况下,为什么不写一个文件com.mypackage.AbstractTest:

abstract class AbstractTest {
  abstract String getString();
}

class ExtensionTest extends AbstractTest {
  @Override
  String getString() {
    return "hello world";
  }
}
Run Code Online (Sandbox Code Playgroud)

... 而不是:

abstract class AbstractTest {
  abstract String getString();

  class ExtensionTest extends AbstractTest {
    @Override
    String getString() {
      return "hello world";
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑2:正确地指出我之前编辑中的建议存在缺陷,因为无法在包之外构建ExtensionTest.但是,周末我对此有了进一步的考虑,那么下面呢: …

java extends inner-classes outer-classes

11
推荐指数
2
解决办法
1万
查看次数

Java:外部和内部类方法之间的名称歧义

假设我有:

public class OuterClass() {

  public class InnerClass {
    public void someMethod(int x) {
      someMethod(x);
    }
  }

  public void someMethod(int x) {
    System.out.println(x);
  }
}
Run Code Online (Sandbox Code Playgroud)

如何解决someMethod()外部类和someMethod()内部类之间的歧义?

java oop ambiguity inner-classes outer-classes

6
推荐指数
2
解决办法
1701
查看次数

从AsyncTask获取对调用Activity的引用(不作为内部类)

是否可以从AsyncTask中调用不是调用Activity类的内部类来获取对启动执行AsyncTask的Activity实例的引用?

我知道这个线程,但它并没有完全解决如何引用调用Activity.有人建议将对Activity的引用作为参数传递给AsyncTask构造函数,但据报道,这样做总会导致NullPointerException.

所以,我很茫然.我的AsyncTask提供了强大的功能,我不想在每个想要使用它的Activity 中将它复制为内部类.必须有一个优雅的解决方案.

android outer-classes android-asynctask

6
推荐指数
1
解决办法
1万
查看次数

外部类的嵌套类定义,而外部类包含内部类的实例

C++

如何将内部(嵌套)类的定义置于其外部(封闭)类的定义之外,其中外部类至少有一个内部类实例作为数据成员?我搜索了但我找到的最相关的 SO 答案,源文件中的嵌套类定义,没有一个示例,其中外部类将内部对象作为数据成员。我遵循了那个答案,就在外部类的定义中声明但未定义内部类而言,但我的代码仍然被破坏:

struct Outer
{
    struct Inner;
    Inner myinner;
    Outer() : myinner(2) {}
};

struct Outer::Inner
{
    Inner(int n) : num(n) {}
    int num;
};

int main()
{
    Outer myouter;
}
Run Code Online (Sandbox Code Playgroud)

它给出了error C2079: 'Outer::myinner' uses undefined struct 'Outer::Inner'VC11 中的错误。

为什么损坏的代码没有与在Inner的定义中定义的版本等效的效果Outer,就像下面的工作代码一样?

struct Outer
{
    struct Inner
    {
        Inner(int n) : num(n) {}
        int num;
    } myinner;
    Outer() : myinner(2) {}
};
Run Code Online (Sandbox Code Playgroud)

c++ nested nested-class inner-classes outer-classes

5
推荐指数
1
解决办法
1919
查看次数

从外部类访问内部类私有变量

我试图从外部类访问内部类中的私有val,而不创建内部类的实例.

这甚至可以从中获取private inner classthe outer class吗?

提前致谢.

java inner-classes outer-classes

1
推荐指数
1
解决办法
1276
查看次数

Java - 外类内部类的数组

比方说我有:

public class A {
  public A() {
    ...
  }
  ...

  public class B {
    public B() {
      ...
    }
    public void doSomething() {
      ...
    }
    ...
  }

  public class C {
    public C() {
      ...
    }
    public void doSomething() {
      ...
    }
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我想创建一个可以同时包含B和C的ArrayList,我可以myArray.get(i).doSomething()在A中调用,我想要声明我的ArrayList是什么类型的?

java polymorphism inner-classes outer-classes

0
推荐指数
1
解决办法
256
查看次数