找回密码
 注册

QQ登录

快捷登录

新浪微博登陆

搜索
CDD 法语助手
楼主: 志者天佑

战法社团灌水铁

428
回复
17206
查看
[ 复制链接 ]

新浪微博达人勋

我这还好亚
昨天下雨了
2008-7-3 16:11:34

使用道具 举报

新浪微博达人勋

ibm面试题

1)transient和volatile是java关键字吗?(瞬联)
2)抽象类和接口有什么区别?(瞬联)
3)能说一下java的反射机制吗?(瞬联)
4)在java中怎样实现多线程?(瞬联)
5)你用过哪种设计模式?(瞬联,IBM,aspenTech)
6)请说一下MVC架构(瞬联,IBM,aspenTech)
7)如果类a继承类b,实现接口c,而类b和接口c中定义了同名变量,请问会出现什么问题?(瞬联)
8)请说一下java中为什么要引入内部类?还有匿名内部类?(瞬联,IBM)
9)请说一下final,finally和finalize的区别?(瞬联)
10)请说一下HTTP请示的基本过程(IBM)
11)java中存在内存泄漏问题吗?请举例说明?(IBM)
12)请说一下java中的内存回收机制所采用的算法(IBM,瞬联)
13)请说一下System.gc()函数的作用。什么什么时候可以调用垃圾回收器?(瞬联)
14)你做过的项目中采用了什么安全认证机制?(IBM)
15)Math.round()什么作用?
2008-7-3 16:31:46

使用道具 举报

新浪微博达人勋

(2)这道题比较常见:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
2008-7-3 16:33:29

使用道具 举报

新浪微博达人勋

抽象类和抽象方法的产生在Thinking in Java里面阐述的非常清楚了,正如那个Instrument的例子,Instrument类的对象没有任何意思,它是抽象的,定义在它里面的play()方法也是没有意思的,之所以定义这个方法,是为了在它的继承类中,可以用不同的方法类表示这个接口,产生不同的行为。为了防止客户端调用了这个方法,也不会产生编译错误,但是执行的结果不是客户端所希望的,那么怎样使得这样的调用在编译的时候就能发现问题,从而防止这种问题出现呢?解决的方法就是“抽象方法机制”。在方法前面加abstract关键词:
                                      abstract void f();
这个方法是不完整的,仅有申明没有方法体。那么就变成了抽象类,如果一个类包含一个或多个抽象方法,那么此类就必须限定为abstract的,否则编译器会报错。由于抽象类的不完整(抽象方法的不完整造成的)就不能产生该类的对象,编译器就会产生报错。

abstract class Instrument{
public abstract void play();
}

class Wind extends Instrument{
  public void play(){
   System.out.println("Hello Wind!");
  }
}

public class Music{
public static void tune(Instrument i){
  i.play();
}

public static void main(String[] args){
  Wind w = new Wind();
  tune(w);
}
}

上面的输出结果为:
Hello Wind!

如果将Instrument的class前面abstract除掉就会产生编译错误:
Instrument 不是抽象的,并且未覆盖 Instrument 中的抽象方法 play()

当Music类中生成Instrument类时,看看编译能不能通过:

public class Music{
public static void tune(Instrument i){
  i.play();
}

public static void main(String[] args){
  Wind w = new Wind();
  tune(w);
}
}

结果编译报错:
Instrument 是抽象的;无法对其进行实例化

纵上可以得到,所谓“抽象”的引入是为了防止我们产生错误(或者说正确设计合适的类,没有实际意思的类可以将其“抽象”),而且为继承类提供统一接口。
2008-7-3 16:41:48

使用道具 举报

新浪微博达人勋

Java面试笔试题大汇总

http://coolmist.javaeye.com/blog/122365
2008-7-3 17:08:39

使用道具 举报

新浪微博达人勋

2008-7-3 17:13:21

使用道具 举报

新浪微博达人勋

xiexie pig
2008-7-3 18:56:30

使用道具 举报

新浪微博达人勋

好久好久没灌水了  该干正事来灌水了
2008-7-3 20:59:47

使用道具 举报

新浪微博达人勋

好深奥啊
2008-7-3 21:00:56

使用道具 举报

新浪微博达人勋

赫赫
这个变成我的学术贴了
计算机面试准备铁
2008-7-3 21:04:39

使用道具 举报

新浪微博达人勋

好好准备
2008-7-3 22:13:29

使用道具 举报

新浪微博达人勋

谢谢
赫赫
2008-7-3 22:47:18

使用道具 举报

新浪微博达人勋

Thinking.In.Java.3rd.Edition.Chinese.eBook.pdf
2008-7-4 16:57:41

使用道具 举报

新浪微博达人勋

2008-7-4 16:57:51

使用道具 举报

新浪微博达人勋

灌就一个字
2008-7-4 17:14:29

使用道具 举报

您需要登录后才可以回帖 登录 | 注册 新浪微博登陆

本版积分规则

返回顶部