一、抽象
1.1 概述
抽象: 往往用来表示设计中得出的抽象概念,一般不会有具体的实体表示
比如动物,他只是一个抽象的概念,并没有一个具体的东西叫动物
所以动物就不能代表一个具体的实体,就意味着,动物类,是不能创建对象的
所以 此时动物类,应该定义为抽象类
abstract:修饰符,表示抽象的
- abstract修饰类为抽象类,并且抽象类不能创建对象,但是依然有构造方法,用于子类创建对象时调用(super())
- abstract修饰的方法为抽象方法,抽象方法没有 方法体,用于被子类实现
- 抽象方法,必须在抽象类中,而抽象类中不一定有抽象方法
1.2 怎么用
1.3 注意
final 和 abstract 不能同时修饰
因为final表示最终,不可修改,修饰的类不能被继承,修饰的成员方法不能被覆写
而abstract表示抽象的,抽象类和抽象方法,就是用于被继承.被子类实现覆写的
二、接口
2.1 是什么
面向接口编程
接口是解决Java中单继承导致功能变弱问题
一个类只能继承一个类,但是可以实现很多接口
使用接口,也是可以发生多态的
接口可以看做特殊的抽象类,完全抽象
接口中没有变量,只有常量public static final ,并且psf可以省略
1.8之前,接口中没有其他方法,只有抽象方法和常量
1.8开始,新特性接口中可以出现default方法和静态方法
由定义类关键字class改为interface
2.2 优点
就是多态的优点,降低耦合度
2.3 怎么用
1 类和类 单继承 extends
2 类和接口 多实现 implements,多个逗号隔开
3 接口和接口之间 多继承 , 多个逗号隔开
继承和实现 可以同时存在,先继承,后实现
一个类实现接口后,需要实现所有的抽象方法
一个抽象类实现接口后,需要实现所有的抽象方法
一个抽象类实现接口后,可以实现0~N个抽象方法
接口不能创建对象,并且没有构造方法
2.4 接口和对象的区别
如果某个功能通过抽象类和接口都能完成,优先使用接口
因为类和类是单继承,而类和接口是多实现
我们使用接口的话,会保留类继承,扩展性更强
三、object
Object是java提供的根类,所有类都直接或间接继承Object
Object中的方法是所有类都有的
Object b = new xxx() 可以发生多态
3.1 toString
toString方法,返回这个对象的字符串表示形式
当输出一个引用类型的时候,会自动调用该对象的toString方法
默认的toString方法是:包名.类名@十六进制
3.2 Equals
设计目的:用于比较两个对象是否相同,默认比较内存地址
== : 比较基本类型的时候,比较的是值的大小,而比较引用类型的时候,只能比较内存地址是否相同
3.3 finalize
垃圾:就是没有引用指向它的时候,该对象会被视为垃圾数据
finalize方法,是当垃圾被回收之前,jvm会自动调用该对象的finalize方法
由于finalize方法是回收的时候执行,并且只执行一次,所以适合做关闭资源等收尾操作
finalize方法是jvm自动调用,该方法并没有回收垃圾的功能,如果我们手动调用,也只是单纯的调用方法而已
前,jvm会自动调用该对象的finalize方法
由于finalize方法是回收的时候执行,并且只执行一次,所以适合做关闭资源等收尾操作
finalize方法是jvm自动调用,该方法并没有回收垃圾的功能,如果我们手动调用,也只是单纯的调用方法而已