1 abstract
1.1 是什么
abstract 修饰符 表示抽象的 用来修饰抽象类和抽象方法
* abstract修饰的类是抽象类 并且抽象类不能创建对象 而且抽象类一般主要是用于被继承
* 子类如果继承了抽象类 那么需要实现所有的抽象方法否则需要使用abstract修饰
* 普通类继承抽象类的话需要实现(覆写) 所有的抽象方法
* 抽象类继承抽象类 可以覆写也可以不覆写抽象方法
* 抽象方法没有方法体可以看做没有方法体的成员方法 只定义功能 不定义实现 用于让不同的子类去实现(覆写)这就是多态的思想
* 抽象方法必须在抽象类里面 而抽象类中可以没有抽象方法 可以有抽象方法 成员方法 静态方法
* 抽象类可以看做特殊的类 类能做的事情他都可以做 就是不可以创建对象 可以有抽象方法
* abstract 和final不可以同时出现
1.2 使用
![](https://img-blog.csdnimg.cn/2008c3c12ac04cdcb29feba5bff09445.png)
*
2 interface
2.1是什么
interface 定义接口的关键字
* jdk1.8之前 接口完全抽象 只允许有抽象方法跟常量 psf public static final
* 之后 可以出现静态方法跟默认方法 可以看做成员方法
* 接口中 没有变量 只有常量 可以有局部变量 psf可以省略 权限默认是public 而且抽象方法的abstract可以省略
* 接口不能创建对象是没有构造方法 但是可以多态
*父接口 变量 = new 子类();
*类跟接口之间 不是继承关系 而是实现 implements 可以多实现 用逗号隔开
* 一个普通类实现接口 需要实现(覆写) 所有接口的抽象方法
* 抽象类实现接口 可以覆写可以不覆写
*接口跟接口是extends关系 多继承
*接口的静态方法可以直接通过接口名调用
*如果接口跟抽象类都可以实现某个功能 优先使用接口
* 因为类跟接口是多实现关系 如果使用接口这样会保留类继承 扩展性强
2.2怎么用
3 Object
3.1概述
Object 是java提供的根类(祖宗),所有类都直接或间接继承Object
java.lang.Object; 在java.lang包下 , 这个包 是 核心包,用该包下所有的类,都不需要进行导入
3.2 Equals方法
equals方法的设计目的 : 比较两个对象是否相等,但是 默认的equals比较的是内存地址
* == : 比较基本类型是比较的值的大小, 比如引用类型,比较的是内存地址
默认的equals方法里面就是用的==
* 如果我们不要比较内存地址,而且比较某些属性值的话,需要我们根据需求进行覆
* String ,已经覆写了equals方法,比较的是值
3.3 toString
toString : 该方法代表了该对象的字符串形式的描述方式
输出一个引用类型的时候,会自动调用该对象的toString方法 , 默认的toString方法是打印内存地址
如果打印不要内存地址,或者需要以特定格式打印输出,则需要我们自己覆写该方法
3.4 finalize
JVM四大特性 跨平台 多线程 面向对象 自动垃圾回收
面向对象特性 封装 继承抽象 多态
垃圾 没有任何引用指向该对象就视为垃圾数据 也就是说在堆内存有个对象谁也找不到他
垃圾回收的时候自动该对象的finalize方法 是在对象声明周期结束的时候调用的
适合做一些关闭资源等操作
finalize是没有回收功能 只是在回收前自动被调用可以手动调用该方法