1、abstract
1.1是什么
abstract是修饰符,表示抽象的,用来修饰抽象类和抽象方法
abstract修饰的类是抽象类,并且抽象类不能创建对象,抽象类一般用于继承
如果子类继承了抽象类,那么子类需要实现抽象类的所有抽象方法,否则该子类就需要使用abstract修饰
普通类继承抽象类,需要实现抽象类的所有方法
抽象类计继承抽象类,需要实现0~N个抽象方法
abstract修饰的方法是抽象方法,该方法没有方法体,可以看做没有方法体是成员方法,只定义功能,不实现功能,让不同的子类来实现功能
抽象方法,必须在抽象类中,而抽象类中可以没有抽象方法
抽象类可以看做特殊的类,类能做到,他都可以做,但不能创建对象,可以有抽象方法而已
abstract 和 final 不能同时出现
1.2使用语法
public class Abstract_01 {
}
abstract class Sup {
abstract public void m1();
}
class Sub extends Sup {
@Override
public void m1() {
}
}
abstract class Sub1 extends Sup {
}
2.Interface
2.1是什么
Interface是定义接口的关键字
Interface: 定义接口的关键字
JDK1.8之前,接口是完全抽象的,只允许出现抽象方法和常量(psf)
1.8开始,可以出现静态方法和默认方法(等同看成成员方法)
接口中,没有变量(可以有局部变量),只有常量,并且psf可以省略,接口中,权限控制默认是公共的
并且抽象方法的abstract可以省略
接口不能创建对象,没有构造方法,但是可以发生多态 父接口 变量 =new 子类();
类和接口之间,不再是继承关系(extends),而是实现关系(implements),并且是多实现,多个用逗号隔开
一个普通类实现接口,要覆写所有抽象方法
一个抽象类实现接口,需要实现~N个抽象方法(类似抽象类继承抽象类)
接口和接口是直接继承关系,并且可以多继承,多个用逗号隔开
如果接口和抽象类都能实现某个功能,优先使用接口(因为类和接口是多实现关系,如果使用接口实现功能,这样会保留继承功能,扩展性更强
3.Object
3.1 概述
Object 是java提供是根类(祖宗),所有类都直接或者间接继承了Object
java.lang.Object 在java.lang包下,这个包是核心包,用该包下的所有类,都不需要导入
3.2 Equals
equals方法的设计目的:比较俩个对象是否相等,但是默认的equals比较的是内存地址
==:比较基本类型的话,比较的是值的大小,比较引用类型的话,比较的是内存地址
如果我们不比较内存地址,而是比较属性的话,需要我们根据需求进行覆写
String ,已经覆写了equal是方法,比较的是值
3.3 Finalize
* JVM : 跨平台,多线程,面向对象,自动垃圾回收
*
* 面向对象 : 封装,继承,抽象,多态
*
* 垃圾 : 没有任何引用指向该对象的时候,则该对象为垃圾数据
* 就是堆内存有个对象,但是谁也找不到它
*
* 垃圾在被回收的时候,会自动调用该对象的finalize方法,是在对象生命周期要结束的时候,被调用的
* 所以 适合做一些关闭资源等操作
*
* finalize是没有回收功能的,只是要被回收之前,自动被调用而已,我们也可以手动调用finalize方法,但是仅仅是方法调用而已
3.4 toString
* toString : 该方法代表了该对象的字符串形式的描述方式
*
* 输出一个引用类型的时候,会自动调用该对象的toString方法 , 默认的toString方法是打印内存地址
*
* 如果打印不要内存地址,或者需要以特定格式打印输出,则需要我们自己覆写该方法、