您的位置:程序门 -> java -> 非技术区



java面试


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


java面试
发表于:2007-10-08 23:08:47 楼主
abstract   class   name   {
      private   string   name;
      public   abstract   void   getname(string   name)   {}
}
这有何错误?
答案:   错。abstract   method必须以分号结尾,且不带花括号。

正确应该是:public   abstract   void   getname(string   name);

还有,interface中的方法也是一样哦;

eg:   public   interface   single{

public   void   getname();

}

002
package   jdbc;

/**
  *   @author   exceljava
  *
  */
public   class   test   {
  private   string   name;
  public   test()   {   }
  public   string   getmessage(){
    final   string   msg;
    private   string   temp;
    return   temp;
  }

}
有错吗?
答案:   错。局部变量前不能放置任何访问修饰符   (private,public,和protected)。但是final可以用来修饰局部变量,所以知道错在那里了吧


003

abstract   class   something   {
      private   abstract   string   dosomething   ();
}
答案:   错。abstract的methods不能以private修饰。abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstract
method封锁起来呢?   (同理,abstract   method前不能加final)。

004

class   something   {
        int   i;
        public   void   dosomething()   {
                system.out.println("i   =   "   +   i);
        }
}  
有什么错呢?   看不出来啊。
答案:   正确。输出的是"i   =   0"。int   i属於instant   variable   (实例变量,或叫成员变量)。instant   variable有default   value。int的default   value是0。


005

class   something   {
        final   int   i;
        public   void   dosomething()   {
                system.out.println("i   =   "   +   i);
        }
}
和上面一题只有一个地方不同,就是多了一个final。这难道就错了吗?
答案:   错。final   int   i是个final的instant   variable   (实例变量,或叫成员变量)。final的instant   variable没有default   value,必须在constructor   (构造器)结束之前被赋予一个明确的值。可以修改为"final   int   i   =   0;"。


006

此处,something类的文件名叫otherthing.java
class   something   {
        private   static   void   main(string[]   something_to_do)   {                
                system.out.println("do   something   ...");
        }
}
答案:   正确。从来没有人说过java的class名字必须和其文件名相同。但public   class的名字必须和文件名相同。


007

interface     a{
      int   x   =   0;
}
class   b{
      int   x   =1;
}
class   c   extends   b   implements   a   {
      public   void   px(){
            system.out.println(x);
      }
      public   static   void   main(string[]   args)   {
            new   c().px();
      }
}
答案:错误。在编译时会发生错误(错误描述不同的jvm有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时import   java.util和java.sql两个包时直接声明date一样)。对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为   public   static   final.所以可以通过a.x来明确。

008

interface   playable   {
        void   play();
}
interface   bounceable   {
        void   play();
}
interface   rollable   extends   playable,   bounceable   {
        ball   ball   =   new   ball("pingpang");
}
class   ball   implements   rollable   {
        private   string   name;
        public   string   getname()   {
                return   name;
        }
        public   ball(string   name)   {
                this.name   =   name;                
        }
      public   void   play()   {
                ball   =   new   ball("football");
                system.out.println(ball.getname());
        }
}
这个错误不容易发现。
答案:   错。"interface   rollable   extends   playable,   bounceable"没有问题。interface可继承多个interfaces,所以这里没错。问题出在interface   rollable里的"ball   ball   =   new   ball("pingpang");"。任何在interface里声明的interface   variable   (接口变量,也可称成员变量),默认为public   static   final。也就是说"ball   ball   =   new   ball("pingpang");"实际上是"public   static   final   ball   ball   =   new   ball("pingpang");"。在ball类的play()方法中,"ball   =   new   ball("football");"改变了ball的reference,而这里的ball来自rollable   interface,rollable   interface里的ball是public   static   final的,final的object是不能被改变reference的。因此编译器将在"ball   =   new   ball("football");"这里显示有错。


发表于:2007-10-08 23:44:541楼 得分:0
楼主辛苦了不错得呵呵细节也是很重要得
发表于:2007-10-08 23:51:522楼 得分:0
lz够细心的。。

  偶新手..


快速检索

最新资讯
热门点击