Board logo

标题: java面试之抽象类和接口知识点 [打印本页]

作者: qingqing3721    时间: 2011-8-27 12:07     标题: java面试之抽象类和接口知识点

1.abstract class 在 Java 语言中表示的是一种承继关系,一个类只能运用一次承继关系。但是,一个类却可以实现多个interface。
  2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员办法,而在interface中,只能够有静态的不能被修正的数据成员(也就是必需是 static final的,不过在 interface中一般不定义数据成员),所有的成员办法都是abstract的。
  3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"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)抽象类中假设全部是抽象办法,那么抽象办法就是一个纯抽象类。




欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0