guoln 发表于 2012-1-5 10:48:29

java面试之抽象类和接口知识点

1.abstract class 在 Java 语言中表示的是一种承袭关系,一个类只能运用一次承袭关系。但是,一个类却可以实现多个inte**ce。   2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在inte**ce中,只可以有静态的不能被修正的数据成员(也就是必需是 static final的,不过在 inte**ce中一般不定义数据成员),一切的成员方法都是abstract的。  3.abstract class和inte**ce所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,inte**ce表示的是"like-a"关系。  4.实现笼统类和接口的类必需实现其中的一切方法。笼统类中可以有非笼统方法。接口中则不能有实现方法。  5.接口中定义的变量默认是public static final 型,且必需给其初值,所以实现类中不能重新定义,也不能改变其值。  6.笼统类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。  7.接口中的方法默认都是 public,abstract 类型的。  1、Java接口和Java笼统类最大的一个区别,就在于Java笼统类可以提供某些方法的局部实现,而Java接口不可以,斐格旗舰店这大约就是Java笼统类唯一的优点吧,但这个优点非常有用。如果向一个笼统类里参与一个新的具体方法时,那么它一切的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里参与一个新方法,一切实现这个接口的类就无法成功经过编译了,因为你必需让每一个类都再实现这个方法才行,这显然是Java接口的缺陷。  2、一个笼统类的实现只能由这个笼统类的子类给出,也就是说,这个实现处在笼统类所定义出的承袭的等级结构中,而由于Java语言的单承袭性,所以笼统类作为类型定义工具的效能大打折扣。在这一点上,Java接口的优势就出来了,任何一个实现了一个Java接口所规则的方法的类都可以具有这个接口的类型,而一个类可以实现恣意多个Java接口,从而这个类就有了多种类型。  3、从第2点不难看出,Java接口是定义混合类型的理想工具,混合类标明一个类不仅仅具有某个主类型的行为,而且具有其他的次要行为。  关于笼统类的补充:  (1)普通的类也可以在class前加abstract声明为笼统,只不过此时的该类不再可以实例化了。  (2)如果一个类里面有一个以上的笼统方法,则该类必需声明为笼统类。笼统方法是不可以有方法体的。  (3)笼统类中可以有非笼统方法,非笼统的方法是(也必需)有方法体的。  (4)笼统类中如果全部是笼统方法,那么笼统方法就是一个纯笼统类。

页: [1]
查看完整版本: java面试之抽象类和接口知识点