下面是我的理解,供参考:
正确答案是D。
A,错误,是因为子类构造器默认调用父类无参的构造器,在这个例子中,父类Father的构造器是有参的构造器,没有定义无参的构造器,所以子类构造器中需要显式调用父类有参构造器才能通过编译,所以错了.
B,错误,因为子类没有定义带参数的有参构造器,所以错了;
C, 错误, 同B选项一样, 子类没有定义带参数的构造器。
所以,正确答案是D。
测试代码如下:
参考链接:
public class Father {
int x;
Father(int a){
x=a;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Son s = new Son();
System.out.println(s.x);
Son s2 = new Son(10);
System.out.println(s2.x);
Father s3 = new Son(10);
System.out.println(s3.x);
}
}
class Son extends Father{
// https://blog.csdn.net/wei_zhi/article/details/52780026
Son(){
// 因为父类定义了有参的构造器,而没有定义无参的构造器
// 所以子类需要显式调用父类有参的构造器
super(2);
}
Son(int i) {
// 同上,这里同样显式使用父类的有参的构造器
super(i);
}
}
因为基类只有有参构造函数,没有无参构造函数,而子类只有无参构造函数,因此子类是无法创建的。具体来说,Son类构造时,同时要构造基类对象,但基类构造函数必须要有参,而子类构造无法提供参数,所以实际无法构造子类对象
D Father中只有 Father(int a)这个构造参数而没有无参数的构造参数,所以说在 Son(){} 这里就会报编译错误
v-slot
子组件中有数据,但是需要在父组件中控制页面结构
子组件:
<template>
<div>
<h1>子组件</h1>
<ul>
<slot name="list" v-for="item of movies" :item="item"></slot>
</ul>
</div>
</template>
<script>
export default {
data(){
return{
movies:[
'怒火追凶','上海王2','谎言大师'
]
}
}
}
</script>
<style></style>
父组件:
<template>
<div>
<h1>父组件</h1>
<hr>
<v-child>
<template v-slot:list="props">
<li>{{ props.item }}</li>
</template>
</v-child>
</div>
</template>
<script>
import vChild from './Child'
export default {
components:{
vChild
}
}
</script>
<style></style>