jbrg2008

人以铜为镜,可以正衣冠;以古为镜,可以见兴替;以人为镜,可以知得失.

浅析final,abstract修饰符

1.final修饰符

        有时候,你不希望别人坐享其成,通过继承你写的类得到他自己所需要的类,怎么办呢?这个时候你就可以在你的class之前加上final这个修饰府,例如public final class test{……},加上了这个修饰符之后,别人在继承这个类的话就会编译出错,提示他这个类不能构建子类。从这我们可以看出,final修饰符和abstract修饰符是不能同时使用的,因为abstract类可以说是专门用来继承的,而final类则不能用于继承。那么如果是在方法的前面加上final修饰符有什么作用呢?比如说A类中有个声明为final的方法a(){….},那么B继承A的时候,B就不能覆盖方法a(){….},否则编译出错,提示Cannot override the final method from A。此外,如果一个类声明为final类的话,它里面所有的方法都自动成为final类型的。自然的,你肯定会问,如果一个域申明为final的时候有什么作用?一个属性声明为final之后,你不能在对它重新进行赋值,否则编译报错,The final field ×× cannot be assigned。另外,请注意,类声明为final的时候,仅仅它的方法自动变为final,而属性则不会。

2.抽象类

抽象类的用处是十分大的,特别是对于OOP而言,关于抽象类,总结几点:
a.  抽象类不能实例化,即不能对其用new运算符;
b.  类中如果有一个或多个abstract方法,则该类必须声明为abstract;
c.  抽象类中的方法不一定都是abstract方法,它还可以包含一个或者多个具体的方法;
d.  即使一个类中不含抽象方法,它也可以声明为抽象类;

posted on 2008-01-04 08:35 翰林 阅读(405) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: