首页 > 编程知识 正文

day22什么意思,day2184

时间:2023-05-04 00:02:52 阅读:285967 作者:1259

1. A 派生出子类 B , B 派生出子类 C ,并且在 java 源代码有如下声明: A a0=new A();A a1=new B();A a2=new C();

问以下哪个说法是正确的?()

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 子类.

2. 下面代码将输出什么内容:() public class SystemUtil{public static boolean isAdmin(String userId){return userId.toLowerCase()=="admin";}public static void main(String[] args){System.out.println(isAdmin("Admin"));}}

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,其实就是指该引用在堆中没有对应的对象,但是编译的时候还是能根据声明找到其所属的静态类型。

4. 下列哪一种叙述是正确的()

A abstract修饰符可修饰字段、方法和类
B 抽象方法的body部分必须用一对大括号{ }包住
C 声明抽象方法,大括号可有可无
D 声明抽象方法不可写出大括号

结果: C

解释:
abstract不能修饰字段.
抽象方法,是没有实现的方法,根本就没有body部分

5. 选项中哪一行代码可以替换 //add code here 而不产生编译错误? public abstract class MyClass {public int constInt = 5;//add code herepublic void method() {}}

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项错误

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。