JAVA中内部类被继承时,SUPER()是什么意思?

2024-12-30 09:12:04
推荐回答(5个)
回答1:

super()是当前对象的直接父类的无参的构造函数。
在这个问题中super()的执行就是执行了Outer.Inner 的默认构造函数。
构造函数继承
规则:
1 子类无条件继承父类不含参数的构造函数
2 若子类无自己的构造函数,父类的无参构造函数做为子类构造函数,若有创建对象先执行父类无参构造函数,再执行自己的构造函数
3 父类中含参构造函数,子类可以在自己的构造函数中用super()来调用,必须放在第一句.

回答2:

super()是当前对象的直接父类的无参的构造函数。
内部类也和其他普通类一样可以被继承,但是继承内部类较继承普通类要复杂一些,需要设置专门的语法进行继承。

创建OutputInnerClass类,使OutputInnerClass类继承ClassA类中的内部类ClassB。

public class OutputInnerClass extends ClassA.ClassB{ //继承内部类b
public OutputInnerClass(ClassA a)
{a.super();
}}
class ClassA{
class ClassB{}
}
在某个类继承内部类时,必须硬性给予这个类一个带参数的构造方法,并且该构造方法的参数为需要继承内部类的外部类的引用,同时在构造方法体中使用a.super()语句,这样才为继承提供了必要的对象引用。

回答3:

这其实是内部类继承中的特殊语法

内部类也和其他普通类一样可以被继承,但是继承内部类较继承普通类要复杂一些,需要设置专门的语法进行继承。

创建OutputInnerClass类,使OutputInnerClass类继承ClassA类中的内部类ClassB。

public class OutputInnerClass extends ClassA.ClassB{ //继承内部类b
public OutputInnerClass(ClassA a)
{a.super();
}}
class ClassA{
class ClassB{}
}

这玩意儿看看有个印象就好 一般没什么用

在某个类继承内部类时,必须硬性给予这个类一个带参数的构造方法,并且该构造方法的参数为需要继承内部类的外部类的引用,同时在构造方法体中使用a.super()语句,这样才为继承提供了必要的对象引用。

回答4:

正如 knightzhuwei 所说的,JAVA要求这么写是有一定道理的,因为你是要继承Outer类的内部类,所以先要通过Outer类才能访问到Inner类。
ou.super();//意思就是调用Outer类的无参数的父类构造方法。

回答5:

ou.super();
//调用的Outer父类,即Object类的无参构造方法