如果实例化一个子类,而子类则自动调用父类构造方法,那么不就不需要用super关键字了吗?

[41]、下列有关子类继承父类构造函数的描述正确的是()。
【答  案】B
【分  数】1分
【选  项】
A、子类的对象创建时,先调用子类自己的构造函数,然后调用父类的构造函数
B、子类必须通过super关键字调用父类的构造函数
C、子类无条件地继承父类不含参数的构造函数
D、子类无法继承父类的构造函数

这个是应该选B,是这样的,在实例化一个子类对象的时候,如果不写SUPER关键字,那么JVM会自动调用父类的无参构造方法,如果需要用到父类的有参构造方法,那么必须用SUPER关键字来传参,不管在什么时候,实例化子类对象的时候都先调用父类的构造方法追问

谢谢这么快。不过。。。
B我明白了,
还有D,子类能继承父类的构造方法吗?还是只继承无参构造方法?

追答

呵呵,这个问题有的人说能,有的人说不能。正确的应该是没有继承父类的构造方法的,只是在实例化子类的时候先虚拟机先调用了父类的构造方法而已
比如,这样
public class A{

public A(String str){
System.out.println(str);

}

}
public class B extends A{
public B(int number){

System.out.println(number);

}

}

public static void main(String[] args){
//B b=new B("test");//这样是会错的
B b=new B(1); //这样就可以了

}

而也不是只继承了无参构造,如果你父类是无参构造,你在子类的构造方法中没有写上SUPER,JVM是隐式调用了SUPER关键字的

温馨提示:内容为网友见解,仅供参考
无其他回答

子类要调用父类的方法,必须使用super关键字.对吗?
从多太的角度来看,子类是可以继承父类的方法,如果一个子类继承了父类的方法,那么不用super关键字就是调用本类的方法,如果想调用父类的话就要加super。比如:public abstract class TestA(){ public void a(){ System.out.println("this is a method.");} protected void b(){ System.out....

子类继承父类时,是否只能调用父类的无参构造函数
这个是应该选B,是这样的,在实例化一个子类对象的时候,如果不写SUPER关键字,那么JVM会自动调用父类的无参 构造方法 ,如果需要用到父类的有参构造方法,那么必须用SUPER关键字来传参,不管在什么时候,实例化子类对象的时候都先调用父类的构造方法 ...

Java中super关键字及super()的使用
4. super在区分局部变量和实例变量时不能省略。例如:在方法中定义了局部变量与实例变量同名时,使用super.访问实例变量。5. super()只能出现在构造方法的第一行,用于调用父类的构造方法,实现代码复用。6. super()在子类构造方法中默认存在,若未显式编写,系统自动添加无参的super()。7. this和sup...

java继承时,实例化子类,是否会默认调用父类构造方法
如果父类无构造方法(其实是一个默认无参的构造方法),那么子类的构造方法中会自动进行调用;如果 父类有自己的构造方法(这时父类不会有默认无参的构造方法),那么在子类的构造方法中,必须要调用父类的某个构造方法,而且必须是在构造方法的第一个语句 中进行调用。究其原因,想必是 Java 语言设计...

JAVA中子类用SUPER调用父类的构造方法,一定要把SUPER放在第一行吗?
你不写默认是在第一行系统有会加上的。 创建子类对象时,调用子类构造方法之前会先调用父类构造方法,如果有父类一直追溯到Object类,它是祖宗类,哈哈 如果你不写第一行,默认你是可以写一个继承过来的属性赋值的,尽管你认为你可以不这样写,但是系统为了以防万一有人这么干,所以super要在第一行...

java中,子类初始化时一定要调用父类的构造方法,不调用行吗?_百度知 ...
一定会调用,原因是这样的。因为子类继承了父类,那么就默认的含有父类的公共成员方法和公共成员变量,这些方法和变量在子类里不再重复声明。如果你初始化子类的时候,不初始化父类,那么你通过子类调用父类方法或变量的时候会出现什么情况呢?当然就是抛异常阿!所以,Java虚拟机会在你初始化子类的时候...

子类可以通过super关键字调用父类的public和protected方法吗
在子类的 构造方法 里可以用super()调用父类的构造方法,这是唯一可调用构造方法的途径,而子类本身就已经继承了父类的方法以及属性,所以在子类里可以直接引用父类的方法与属性,而不需要用super。由于public是公用的修饰符,所以。protected 是保护的修饰符,子类也可以引用。

java 子类的构造函数都必须要super();吗?
不是必须 但是自动调用SUPER 什么时候必须调用SUPER 给你个例子 public class Father { public String name;public Father(String name) { this.name = name;} } public class Son extends Father{ public Son(String name) { super(name);\/\/必须调用,否则他会默认调用父类的无参构造函数,而父类...

子类如何调用父类的构造函数
[val1,]….),除非人为调用父类无参构造函数,否则的话父类的无参构造函数可以不写。有super指定调用的父类构造函数存在即可 6、super指代父类对象,可以在子类中使用 super.父类方法名(); 调用父类中的方法(无论是类方法还是实例方法都可以),此外调用实例方法还可以在方法内部实例化再调用 ...

c++ 子类继承父类构造方法吗
不能,调用格式:父类名::构造函数 楼上说的super是java的,c++中允许多继承(即多个父类),所以没有super关键字

相似回答