public class TestNei {
public class Test1
{
public Test1(int i)
{
System.out.println(i);
}
}
public static void main(String[] args) {
TestNeii tii = new TestNeii();
TestNeii.Test2 tt2 = tii.new Test2(3);
}
}
class TestNeii
{
class Test2 extends TestNei.Test1
{
public Test2(int i)
{
super(i);
System.out.println("heihei");
}
}
}这个是错的
怎么在内部类中继承另一个内部类
解决方案 »
- Graphics中drawString方法?
- JCreator中有没有格式重排的功能?快捷键是什么?
- 怎样用java实现一种快速排序?
- return返回值
- 请教一个正则式的问题
- 急:java中如何实现uncode的小字节序的高低位转码?
- javascript的变量在使用前是否必须声明?还是象VB一样不需要声明?
- java画图!!
- 这是为什么???存储过程,返回值怎么得不到????
- 好心人看一下为什么编译过不了那?给分的
- Java中为什么循环下面的一个switch语句里的break代表跳出循环;而不是跳出swith语句?比如:
- 想要做一个类似于网通客户端一样的那种软件,该怎么弄?就是需要什么样子的技术?
内部类可以使用它所在类的静态变量和成员变量,也可以使用它所在类的方法中的局部变量.内部类不允许有继承.
public WithInner(){
System.out.println("WithInner Constructor");
}
class Inner{
public Inner(){
super();
System.out.println("InnerClass");
}
};
}public class Demo extends WithInner.Inner{
public Demo(WithInner wi){
wi.super();
System.out.println("Demo Contructor");
}
public static void main(String[] args) {
WithInner wi = new WithInner();
Demo d = new Demo(wi);
}
}
class WithInner{
public WithInner(){
System.out.println("WithInner Constructor");
}
class Inner{
public Inner(){
super();
System.out.println("InnerClass");
}
};
}public class Demo {
public static void main(String[] args) {
WithInner wi = new WithInner();
Demo demo = new Demo();
DemoInner di = demo.new DemoInner(wi);
}
private class DemoInner extends WithInner.Inner{
public DemoInner(WithInner wi){
wi.super();
System.out.println("Demo Contructor");
}
}
}
你的代码写错了.
改为如下就行了(一句话):
第一种方法:public class TestNei {
public class Test1
{
public Test1(int i)
{
System.out.println(i);
}
}
public static void main(String[] args) {
TestNeii tii = new TestNeii();
TestNeii.Test2 tt2 = tii.new Test2(3);
}
}
class TestNeii extends TestNei //<===== 加上这一句就行了.
{
class Test2 extends TestNei.Test1
{
public Test2(int i)
{
super(i);
System.out.println("heihei");
}
}
}
即:将TestNeii直接从TestNei继承,这是对你问题的最好的解决方法.
若你不愿意将TestNeii直接从TestNei继承,则可用另外一个方法,见下例代码:
第二种方法:public class TestNei {
public class Test1
{
public Test1(int i)
{
System.out.println(i);
}
}
public static void main(String[] args) {
TestNei tii = new TestNei();
TestNeii tt2 = new TestNeii(tii,3);
}
}
class TestNeii extends TestNei.Test1
{
public TestNeii( TestNei outer,int i)
{
outer.super(i);
System.out.println("heihei");
}
}
两种方法,程序的运行结果是一样的.
还有个方法就是把第一个的内部内变成static的就可以咯