1 .抽象类要被子类继承,接口要被类实现; 2 .接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。 3 .接口里定义的变量只能是公共的静态的常量, 抽象类中的变量可以是普通变量。 4 .抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量。 【同:两者都能有静态抽象内部类!!!】 5 .抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高。 6 .接口是设计的结果,抽象类是重构的结果。 7 .抽象类主要用来抽象类别,接口主要用来抽象功能。
A.vector是线程安全的ArrayList,在内存中占用连续的空间。
初始时有一个初始大小,
当数据条数大于这个初始大小后会重写分配一个更大的连续空间。
如果Vector定义为保存Object则可以存放任意类型,
无需事先知道!!!
B.选项说的情况就是我们自定义异常的情况,
我们可以用违例(Exception)来抛出一些并非错误的消息,
可以,并非错误的消息。
比如我自定义一个异常,若一个变量大于10就抛出一个异常,
这样就对应了B选项说的情况,
我用抛出异常说明这个变量大于10,
而不是用一个函数体(函数体内判断是否大于10,然后返回true或false)判断,
因为函数调用
是入栈出栈
,
栈
是在寄存器之下
的速度最快,且占的空间少
,
而自定义异常
是存在堆
中,肯定异常
的内存开销大
!
C选项是错误的,因为接口中不能声明变量,只有常量!
接口中只有常量定义,没有变量声明。
接口中方法默认是abstract public,
所以在接口只写函数声明是符合语法规则。
但是变量默认是用public final static 修饰的,
意思它是静态常量,不是变量!
另外,
常量不管在接口中还是类中必须在声明时初始化。
D.子类可以访问父类受保护的成员
访问修饰符 访问范围 继承性
private 本类内部 不可继承 私有的
(default) 本类+同包 同包子类可以继承 默认的
protected 本类+同包+子类 可以继承 受保护的
public 公开 可以继承 公开的