利用final定义方法:这样的方法为一个不可覆盖的方法。
9 r2 V5 H* R% z1 h$ `7 i; H) ?6 ^Public final void print(){}; 2 J+ d8 ~; R2 g
为了保证方法的一致性(即不被改变),可将方法用final定义。
2 k3 W* ^. E* f4 ` & u" |. c6 n9 A3 N
如果在父类中有final定义的方法,那么在子类中继承同一个方法。 & {& r, Y& u3 ~& @# I
8 h w* _- X% v7 `, A* W3 Z
如果一个方法前有修饰词private或static,则系统会自动在前面加上final。即private和static方法默认均为final方法。
* o' R" _( U0 V$ B! B$ K3 b 4 w8 E1 H- A* \+ X( ~, M# X6 |% a3 r
注:final并不涉及继承,继承取决于类的修饰符是否为private、default、protected还是public。也就是说,是否继承取决于这个方法对于子类是否可见。
3 T2 i6 e$ O5 ]- y& s5 h {Abstract(抽象)可以修饰类、方法
8 a6 i0 ~- \9 V# R z2 f如果将一个类设置为abstract,则此类必须被继承使用。此类不可生成对象,必须被继承使用。
j9 R J6 E; e( JAbstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性。
8 Z1 N4 i* L4 I3 V3 SAbstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型。
. K) H: {) e' E4 d. {Final和abstract永远不会同时出现。 3 j. }4 ]) c U1 V/ N" Z
) O, l) {& q- ~& T- l: p
当abstract用于修饰方法时,此时该方法为抽象方法,此时方法不需要实现,实现留给子类覆盖,子类覆盖该方法之后方法才能够生效。 |