接口和抽象类的区别

2019-10-10  本文已影响0人  简书不简单iiii

一。 接口和抽象类的区别

接口中所有方法都是默认的public 但是抽象类中有不是抽象的方法

接口中除了static、final变量,不能有其他变量,而抽象类中则不一定

一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过extends关键字扩展多个接口。

从设计层面来说,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范。

二 对象相等和引用相等有什么区别

前者是指内存中的对象是否相等  后者是指对象的引用地址是否相等

三 hashCode()与equals()的相关规定

如果两个对象相等,则hashcode一定也是相同的

两个对象相等,对两个对象分别调用equals方法都返回true

两个对象有相同的hashcode值,它们也不一定是相等的(为什么)

equals 方法被覆盖过,则 hashCode 方法也必须被覆盖

hashCode() 的默认行为是对堆上的对象产生独特值。如果没有重写 hashCode(),则该 class 的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)

四 Java序列化中如果有些字段不想进行序列化,怎么办

对于不想进行序列化的变量,使用transient关键字修饰。

transient关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,被transient修饰的变量值不会被持久化和恢复。transient只能修饰变量,不能修饰类和方法。

上一篇下一篇

猜你喜欢

热点阅读