作业帮 > 综合 > 作业

JAVA构造方法,接口,子类等综合问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/09 09:23:53
JAVA构造方法,接口,子类等综合问题
其中Orario 是我们学校自己的包,简单来说类Orario构造函数
Orario time = new Orario(int hh,int mm);
代表了指定的时间hh小时,mm分钟
Orario adesso = new Orario();
代表了当前时间.
public class Alfa extends Orario {
private String x = "cane";
private static int w = 6;
public Alfa(String z) {
this(z.length());
x = z;
}
public Alfa(int y) {
super(y,w);
w = w + 1;
}
public int t() {
return getOre() + getMinuti() + x.length();
}
public static int getStatico() {
return w;
}
}
class Prova {
public static void main(String[] args) {
System.out.println(Alfa.getStatico()); //1
Alfa a = new Alfa("gatto");
System.out.println(a.t()); //2
a = new Alfa(10);
System.out.println(a.t()); //3
System.out.println(Alfa.getStatico()); //4
}
}
2.至少有一个 Beta的构造函数 描述了一个构造方法 In?
3.如果Beta的构造函数代码 this(...)或者 super(...)开头,
编译时表示需要 super(),然后出现错误,不能编译.
4.Beta的构造函数代码 this(...)或者 super(...)开头,
编译时表示需要 super(),但是能够完成编译.
5.Alfa 是 In的子类型,Gamma 应当提供In的实现方法.( l’implementazione dei metodi di In)
6,如此表达 r instanceof Alfa 是正确的.
7.至少有一个 Beta 的构造函数描述了一个Orario的构造函数.(richiama (implicitamente o esplicitamente) un costruttore di Orario)
8.如此赋值 r = i 能够正确编译.
9.如果Gamma的构造函数代码this(...)或者 super(...)开头,
编译时表示需要 super(),然后报错.
10.如果Gamma的构造函数代码this(...)或者 super(...)开头,
编译时表示需要 super(),但是能够完成编译.
11.如此赋值 r = (Beta) i 能够正确编译,但是在运行的时候会引发错误.
有的题目后面括号是 原文,我怕翻译不好.跟英语有点相似的.
1.Beta 应该提供IN的方法的实现 对
2.至少有一个 Beta的构造函数 描述了一个构造方法 In?错,接口中不能定义构造函数
3. 如果Beta的构造函数代码 this(...)或者 super(...)开头,
编译时表示需要 super(),然后出现错误,不能编译.错,能完成编译
4. Beta的构造函数代码 this(...)或者 super(...)开头,
编译时表示需要 super(), 但是能够完成编译. 对
5.Alfa 是 In的子类型,Gamma 应当提供In的实现方法.( l’implementazione dei metodi di In)
前半句 错. 应该是Orario 的子类型.后半句正确
6,如此表达 r instanceof Alfa 是正确的.错
7.至少有一个 Beta 的构造函数描述了一个Orario的构造函数.(richiama (implicitamente o esplicitamente) un costruttore di Orario) 对
8.如此赋值 r = i 能够正确编译.错.前面是子类型,需要强制类型转换
9.如果Gamma的构造函数代码this(...)或者 super(...)开头,
编译时表示需要 super(), 然后报错. 对
10.如果Gamma的构造函数代码this(...)或者 super(...)开头,
编译时表示需要 super(), 但是能够完成编译. 错.不能完成编译.因为没父类没有无参构造函数
11.如此赋值 r = (Beta) i 能够正确编译,但是在运行的时候会引发错误 错.不会引发错误
再问: 您好,谢谢您的回答。不好意思我的题目中写的时候有几个地方写错了。正确应该分别是: 第3题,第4 。第一句应该是: 如果Beta的构造函数****不以****代码 this(...)或者 super(...)开头.... 第9,第10 题中,应该分别是 如果Gamma的构造函数****不以****代码this(...)或者 super(...)开头..... 请问答案还是这样嘛?我对这块理解不太清楚,能否讲解的更详细些呢? 多多感谢!@···@
再答: 一样的。 如果A类有构造函数,但只有有参的话。那会覆盖无参。 B类如果继承A类的话,B类的构造函数是默认会调用父类的SUPER的无参。
再问: 那请问问什么 3.如果Beta的构造函数代码不以 this(...)或者 super(...)开头, 编译时表示需要 super(),然后出现错误,不能编译---------错,能完成编译 但是 7如果Gamma的构造函数代码不以this(...)或者 super(...)开头, 编译时表示需要 super(), 然后报错。 就是对的呢? Gamma不是继承了Alfa么?Alfa不是隐含的一个无参构造函数么?为什么第7个就会报错呢? 和第3个不是矛盾了么?
再答: 注意 如果A类有构造函数,但只有有参的话。那会覆盖无参。 无参的被覆盖,除非手动再写个无参的。才能有无参构造函数