问以下哪个说法是正确的?()
A 只有第一行能通过编译
B 第1、2行能通过编译,但第3行编译出错
C 第1、2、3行能通过编译,但第2、3行运行时出错
D 第1行,第2行和第3行的声明都是正确的
结果 : D
解释:
多态的三种表现形式: 继承重写, 重载, 向上转型.
A a = new B(); 属于向上转型, 该语句创建了一个B对象, 并将A的对象变量(引用) a 指向了B的对象, 即父类指向子类.
java 中继承是支持传递的, 例如 java中所有的类都是 Object 子类.
A true
B false
C 1
D 编译错误
结果: B
解释:
java中(==)进行比较的时候:
byte,short,char,int,long,float,double,boolean 他们之间的比较,比较的是他们的值。
其余的比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。
3. 阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有() package NowCoder;class Test {public static void hello() {System.out.println("hello");}}public class MyApplication {public static void main(String[] args) {// TODO Auto-generated method stubTest test=null;test.hello();}}A 能编译通过,并正确运行
B 因为使用了未初始化的变量,所以不能编译通过
C 以错误的方式访问了静态方法
D 能编译通过,但因变量为null,不能正常运行
结果: A
解释:
静态方法的使用不依靠对象,只看类型,在编译时就确定了
还有引用类型=null,其实就是指该引用在堆中没有对应的对象,但是编译的时候还是能根据声明找到其所属的静态类型。
A abstract修饰符可修饰字段、方法和类
B 抽象方法的body部分必须用一对大括号{ }包住
C 声明抽象方法,大括号可有可无
D 声明抽象方法不可写出大括号
结果: C
解释:
abstract不能修饰字段.
抽象方法,是没有实现的方法,根本就没有body部分
A public abstract void method(int a);
B consInt=constInt+5;
C public int method();
D public abstract void anotherMethod(){}
答案:A
解释:
A:该方法是抽象方法,所以没有方法体,和题目中的method()方法构成了方法重载(方法名一致,参数不一致),所以是正确的,A项正确
B:类体中只能定义变量和方法,不能有其他语句,所以B项错误
C:选项中的方法和类中的方法重复,所以会发生编译异常,所以C项错误
D:该项方法有abstract修饰,所以是抽象方法,由于抽象方法不能有方法体,所以D项错误
免责声明:文章源自网络,版权归原作者所有,如有侵犯联系删除。