基础知识汇总

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...
        }

<完>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值