一.接口
1.1是什么
引用数据类型,定义接口关键字 Interface 接口名{}
1.2能干嘛
1.接口的出现解决了java单继承子类功能弱化的问题
2.接口仅有常量没有变量,接口中的public static final修饰的常量可以省略不写(常量一般大写)
3.一个类只可以继承一个类,一个类可以实现多个接口
4.接口与接口之间可以实现继承,多个之间用逗号隔开
5.java1.7,在接口中只有抽象与常量
6.java1.8,在接口中可以有静态方法和default方法(成员)[默认不写,则默认为包权限,同包使用]
7.接口中的抽象方法的public abstract可以省略不写
8.implements是实现,若一个类既继承又实现,要先写继承extends再写implements实现
9.一个类实现一个接口的所有abstract方法,但是一个抽象类实现一个接口的0~n个抽象方法
10.接口之间的多继承用多个逗号隔开
1.3和abstract优先使用关系
优先使用接口,因为一个类只能继承一个abstract类但是可以实现多个接口,这样就可以削弱java单继承导致的功能弱化的影响
二.Object类
2.1关于object类
也叫做根类,若一个类没有显示继承关系就默认继承根类,所有类都默认继承object类
2.2equals
equals的目的是比较两个对象是否相同,但是object中equals默认比较的是地址
== 在比较基本数据类型的时候,比较的是大小,在比较引用引数据类型 的时候 比较的是地址
但是在比较的时候一般并不需要比较地址,所以可以对equal方法进行覆写
//String 是引用数据类型 需要通过equal是来比较
// ==在比较引用数据类型 的时候 默认比较的是地址
2.3finalize
JVM特性:面向对象,跨平台,多线程,自动垃圾回收
垃圾:没有任何引用可以找到他的时候,他就是垃圾
finalize方法 就是垃圾回收时,自动调用
如果对象销毁时,需要做一些操作的话 可以写在finalize中 一般是 销毁资源操作
2.4toString
toString 代表对象的字符串表示形式
输出一个引用类型 会自动调toString方法
默认的toString方法 打印的是内存地址(包名.类名@十六进制哈希值)