您的位置:首页 > 其它

基础知识汇总

2014-12-03 22:47 148 查看
1.Java继承中为什么不可以降低父类重写方法的访问权限

Liskov替换原则,子类对象可以被当成父类对象使用。如果可以降低子类的访问权限,那就违反了这一原则了。

2.String变量的内容是不可以改变的,String的toLowerCase等方法的实现,并不是修改了本身的内容,而是创建一个新的字符串返回的。

3.Java中又enum,没有struct和union。

4.关于UML中的箭头方向:Generalization读作继承于,Dependency读作依赖于,include读作包含了,extend读作扩展于,扩展自,就不会搞错方向了。一般来讲除了include以外,其余都是小指向大,子指向父,一般(狭隘)指向抽象(广泛)

5.接口没有构造函数,接口支持多继承。接口中只可以定义static和final的成员变量。接口中只能用public方法,static方法,变量,final变量。默认不写是public的。

接口extends接口,类和抽象类implements接口。接口和接口的方法都是隐式abstract的,不需要显示声明。多继承写法 interface A extends B,C{}

类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。

没有任何方法的接口被称为标记接口。标记接口主要用于以下两种目的:
建立一个公共的父接口:
正如EventListener接口,这是由几十个其他接口扩展的Java API,你可以使用一个标记接口来建立一组接口的父接口。例如:当一个接口继承了EventListener接口,Java虚拟机(JVM)就知道该接口将要被用于一个事件的代理方案。

向一个类添加数据类型:
这种情况是标记接口最初的目的,实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法),但是该类通过多态性变成一个接口类型

使用标记接口可以用instanceof进行类型查询,例如: if(obj instanceof Cloneable) {………} 一些容器例如Ejb容器,servlet容器或运行时环境依赖标记接口识别类是否需要进行某种处理,比如serialialbe接口标记类需要进行序列化操作.

6.包名取为域名反过来的原因:网络中可能是把所有的com网站放在一个目录,目录下每个域名放一个目录,域名下面又有不同的小目录,这样跟包得顺序一致就成了反过来的。比如com下有ihaha,ihaha2目录,ihaha下面有blog目录,那么blog的包名就成了com.ihaha.blog

7.析构函数

java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。

由于这个函数不一定在什么时候调用,如果需要尽快删除的东西,需要采取一些替代方案。比如创建一个try...finally 块(或类似的机制)来实现。

(1).对象不一定会被回收。

(2).垃圾回收不是析构函数。

(3).垃圾回收只与内存有关。

(4).垃圾回收和finalize()都是靠不住的,只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的。

        protected void finalize() //protected限制访问范围,

        {

          super.finalize(); //如果父类也需要释放

          // other finalization code...

        }

<完>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: