首页 > 试题广场 >

如果Child extends Parent,那么正确的有(

[不定项选择题]
如果Child extends Parent,那么正确的有()?
  • 如果Child是class,且只有一个有参数的构造函数,那么必然会调用Parent中相同参数的构造函数
  • 如果Child是interface,那么Parent必然是interface
  • 如果Child是interface,那么Child可以同时extends Parent1,Parent2等多个interface
  • 如果Child是class,并且没有显示声明任何构造函数,那么此时仍然会调用Parent的构造函数
A 可以调用父类无参的构造函数,子类的有参构造函数和是否调用父类的有参数的构造函数无必然联系。
B 接口继承的时候只能继承接口不能继承类,因为如果类可以存在非抽象的成员,如果接口继承了该类,那么接口必定从类中也继承了这些非抽象成员,这就和接口的定义相互矛盾,所以接口继承时只能继承接口。
C 接口可以多继承可以被多实现,因为接口中的方法都是抽象的,这些方法都被实现的类所实现,即使多个父接口中有同名的方法,在调用这些方法时调用的时子类的中被实现的方法,不存在歧义;同时,接口的中只有静态的常量,但是由于静态变量是在编译期决定调用关系的,即使存在一定的冲突也会在编译时提示出错;而引用静态变量一般直接使用类名或接口名,从而避免产生歧义,因此也不存在多继承的第一个缺点。 对于一个接口继承多个父接口的情况也一样不存在这些缺点。所以接口可以多继承。
D 子类即使没有显示构造函数,也会有个无参数的默认构造函数,仍然会调用父类的构造函数。
编辑于 2017-09-02 20:54:38 回复(18)
选BCD
A、子类的构造器第一行默认都是super(),默认调用直接父类的无参构造,一旦直接父类没有无参构造,那么子类必须显式的声明要调用父类或者自己的哪一个构造器。
BC、接口只能继承接口,但是可以多继承。类都是单继承,但是继承有传递性。
D、一个类一旦没有显式的定义任何构造,那么JVM会默认给你一个无参构造。无参构造的第一行依然默认是super()。
发表于 2018-07-10 22:07:13 回复(1)

编辑于 2017-08-31 16:10:27 回复(6)
C interface是用extends的??
发表于 2017-08-25 21:18:23 回复(6)
接口只能继承接口,而且可以多继承。普通类只能单继承。
发表于 2017-08-18 19:09:09 回复(0)

主要解析复习类的构造函数:
首先明确一点:在一个类中没有任何构造函数时,编译器会自动给该类创建一个不带参数的构造方法,如果自己定义了构造函数
则编译器不会自动创建构造函数
***接下来我们看下继承之间构造函数直接的关系
     1.父类中没有有参构造函数,不管无参构造是不是你自己创建的
此时在子类中的构造函数不管是有参还是无参不管是自己创建还是编译器创建,子类都都会调用父类中的一个构造构造函数,
默认情况下在子类中的构造方法中存在一个super(),只是隐藏不隐藏的问题.
     2.父类中为有参构造函数
此时在子类中,无参构造函数将不存在,子类都会调用父类中的一个构造函数,有要调用一个参数的就可以用super(参数);
两个就super(参数,参数);
发表于 2018-07-20 16:37:27 回复(0)
当子类不带有构造函数的时候,系统会自动给子类加入一个构造函数,并且在该函数中执行父类的无参构造函数。

父类没有无参的构造方法,而有有参数的构造方法,那么子类继承的时候,就不能自定义无参的构造方法了。反之,父类有无参构造方法,子类若定义了的无参构造方法,在这个无参数的构造方法里是等于默认第一行super()。

不管怎么样,子类都都会调用父类中的一个构造构造函数,但是子类可以选择调用父类中的哪一个构造,默认情况下在子类中的构造方法中存在一个super();来调用父类的无参构造方法,有要调用一个参数的算就可以用super(参数);,两个就super(参数,参数);
发表于 2017-08-25 16:55:10 回复(1)
子类的构造器(无论有参还是无参)优先调用父类无参构造器,如果父类没有无参构造器,子类构造器需要显示调用父类有参数的构造器。A错在 parent类可能有无参构造器,不一定需要有相同参数的构造器
发表于 2017-08-31 09:34:20 回复(0)
A.父类有没有和子类一样参数的构造方法都不一定呢
发表于 2017-08-19 23:33:07 回复(0)
接口可以多继承
发表于 2022-05-10 09:25:16 回复(0)
D 不严谨 若父类没有无参构造方法且定义了有参构造方法,此时JVM是不会默认调用父类的无参构造方法的
修正一下:若父类没有无参构造方法且定义了有参构造方法,子类还是会默认调用父类的无参方法,但由于父类没有无参构造方法,所以需要避免调用无参构造方法,即可以显式的使用super调用父类的有参构造方法或者在父类定义无参构造方法。
编辑于 2022-05-18 08:35:51 回复(0)
一旦直接父类有参构造函数,并不会直接调用父类构造函数,而是还得声明要调用的是哪个构造函数
发表于 2021-08-25 08:37:46 回复(0)
弄清除接口和抽象类的特点重要
发表于 2021-03-05 19:25:31 回复(0)
<p>接口可以多继承</p>
发表于 2020-11-23 21:26:19 回复(0)
当子类调用的是无参构造器时,若父类的构造器是带有参数的,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的参数列表。
当子类调用的是带参构造器时,则在子类的构造器中用super调用父类构造器不是必须的,如果没有使用super关键字,系统会自动调用父类的无参构造器。
发表于 2019-02-26 21:01:29 回复(0)
Java中,接口是支持多继承的
发表于 2017-09-04 17:19:15 回复(0)
接口继承的关键字不是implements 吗?怎么可以用extends
发表于 2021-05-14 20:15:29 回复(1)
c选项,不应该是实现吗?为啥extends也对
发表于 2021-04-29 11:17:47 回复(2)

D中你得说明一下是创建对象的时候啊。

发表于 2018-08-13 11:17:38 回复(2)
vcc头像 vcc
接口只能继承接口,而且可以多继承
发表于 2018-03-02 01:14:34 回复(0)