日期:2014-05-20  浏览次数:20761 次

求教各位详细的给小弟解惑
一、 选择

1、有关类Demo,哪句描述是正确的? 
  public class Demo extends Base{ 
  private int count; 
  public Demo(){ 
   System.out.println("A Demo object has been created"); 
  } 
  protected void addOne() {count++; } 
  } 

 A 当创建一个Demo类的实例对象时,count的值为0。 

 B 当创建一个Demo类的实例对象时,count的值是不确定的。 

 C 超类对象中可以包含改变count 值的方法。 

 D Demo的子类对象可以访问count。 
 
2、当编译和运行下列程序段时,会发生什么? 
  class Base {} 
  class Sub extends Base {} 
  class Sub2 extends Base {} 
  public class CEx{ 
   public static void main(String argv[]){ 
   Base b = new Base(); 
   Sub s = (Sub) b; 
   } 
  } 

 A 通过编译和并正常运行。 

 B 编译时出现例外。 

 C 编译通过,运行时出现例外。
4、下面的哪个选项是正确的? 
  class ExSuper{ 
   String name; 
   String nick_name; 
   public ExSuper(String s,String t){ 
    name = s;
    nick_name = t; 
   } 
    public String toString(){ 
     return name; 
    } 
   } 
   public class Example extends ExSuper{ 
    public Example(String s,String t){ 
    super(s,t); 
    } 
    public String toString(){ 
     return name +"a.k.a"+nick_name;
    } 
    public static void main(String args[]){
     ExSuper a = new ExSuper("First","1st");
     ExSuper b = new Example("Second","2nd");
     System.out.println("a is"+a.toString());
     System.out.println("b is"+b.toString());
    }
  }


 A 编译时会出现例外。 

 B 运行结果为:
        a is First
        b is second



 C 运行结果为:
        a is First
        b is Secong a.k.a 2nd


 D 运行结果为:
        a is First a.k.a 1nd
        b is Second a.k.a 2nd


5、运行下列程序的结果是哪个?
  abstract class MineBase {
   abstract void amethod(); 
   static int i;
   } 

  public class Mine extends MineBase
  {
   public static void main(String argv[]){
    int[] ar = new int[5];
    for(i = 0;i < ar.length;i++)
    System.out.println(ar[i]);
   }
  }


 A 打印5个0。 

 B 编译出错,数组ar[]必须初始化。 

 C 编译出错, Mine应声明为abstract。 

 D 出现IndexOutOfBoundes的例外。


二、多项选择

1、下面哪个语句是正确的? 

A Object o = new Button("A"); 

 B Button b=new Object("B"); 

 C Panel p = new Frame(); 

 D Frame f = new Panel(); 

E Panel p = new Panel(); 


这题 a 项我不明白对在哪里?



------解决方案--------------------
1.在创建实例时对基本数据类型默认初始化为0
2。编译通过,但在执行是会抛出一个ClassCastException的异常,也就是说无法进行强制转化
因为由父类转向子类是不安全的
4.创建2个对象,1个是父类,一个是子类,但都重写了Object类的toString()方法
1.Object为所有类的父类,声明时为Object类型,但实际类型为Button类型,当以后要用到o对象是要进行强制转换

------解决方案--------------------
1 java 类在实例化的时候,所有的变量都会被赋给默认值,int的都是0。
2 子类的实例肯定属于父类,但是属于父类的实例不一定是子类的。
4 a 是ExSuper,而b是Example,它们调用自己的toString函数,如果自类没有toString时,才会调用父类的toString函数。
5 我不知道你的答案是什么,我试了一下,打印出了5个0。
2。1 
一个button也是一个Object,在java里所有的类都是继承自Object.
------解决方案--------------------
抽象类并不是只能由抽象类来继承。所谓抽象类是指该类中有方法没有被实现,
如第5题所示: abstract void amethod();
凡是类中有方法没被实现的都成为抽象类,并注上修饰符: abstract 。