java学习

错题分析

请看如下代码

class Person { 
           private int a; 
           public int change(int m){return m;} 
      } 
      public class Teacher extends Person{ 
           public int b; 
           public static void main(String arg[]){ 
             Person p = new Person(); 
             Teacher t = new Teacher(); 
             int i; 
             // point x 
            } 
          } 

下面哪些放在// point x行是正确的?

A.     i = b;

B.     i = p.a;

C.    i = t.change(30);

D.    i = t.a; 

正确选项:C

我的答案:D

错误分析:

D选项的t.a中的是被private修饰的,所以即使是通过对象去调用,也是无法正常调用,需要使用到get和set方法才能访问到。过于粗心的容易忽略属性的修饰符,从而导致不能做出正确的判断。

以下代码中的输出结果是(     )

public class Something{
	public static void main(String[] args){
		Other o=new Other();
		new Something().addOne(o);
		System.out.println(o.i);
	}
	public void addOne( Other o){
		o.i++;
		o =  new Other();
		o.i++;
	}
}

A        1

B        2

C        0

D        编译错误

正确选项:A

我的答案:D

错误分析:

对new关键字和链式编程的理解不够,看到new Something().addOne(o);这段代码就下意识的认为构造方法后不能调用方法。

以下选项可替换题目中//add code here而不产生编译错误的是(    )。(选择二项)

public abstract class MyClass{
	public int constInt=5;
	//add code here
	public void method( ){	
	}
}

A        public abstract void method(int a);

B        constInt =constInt+5;

C        public int method( );

D        public abstract void anotherMethod( );

正确选项:A D

我的答案:B D

错误分析:

对变量的理解有点小问题,变量是无法直接在类中直接使用,这对变量的操作应该在方法体或者代码块中。

使用final修饰的变量将变成常量,其中不能再被改变;使用final修饰的方法将无法被子类重载;使用final修饰的类将无法再被其他类继承。(   

错误分析:

重载:在同一个类中,如果定义了多个方法名相同,但是可以通过参数进行区分的方法,那么这些方法就可以称之为重载,也就说就算不被final修饰,子类和父类的关系也不是重载。(题目有点小问题,重载应该是重写

抽象方法不能含有方法体,并且必须定义在抽象类中。(    )

错误分析:

对接口的理解有误,认为接口和抽象类是不同的,不清楚接口也属于抽象类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值