继承
继承:子类可以拥有父类中除了私有内容外其他所有内容
public class 类 extends 父类{
}
作用:简化代码开发
子类对父类进行了扩展
super关键字
super:表示父类中的内容
this:表示自己类中的内容
创建对象的过程:先创建父类的对象,然后创建子类的对象
总结:
- super可以获取到父类中的内容
- 可以调用父类中的构造方法,必须写在子类构造方法的第一行,如果父类的构造是无参数的,可以不写。如果没有无参数的构造必须写super。
方法的重写
重写:子类对父类中提供的方法进行重新定义
语法:子类和父类中的方法的声明完全一致
重写又称为方法的覆盖
多态
多态:同一个对象拥有多种形态
作用:把不同的数据类型进行统一
- 把子类的对象赋值给父类的变量->向上转型(会屏蔽子类中特有的方法)
- 把父类的对象赋值给子类的变量->向下转型
向下转型可能有风险,java要求必须要写强制类型转换(转换之后的数据类型)变量
final
- 被final修饰的变量不可被改变(常量)
- 被final修饰的方法不可被重写
- 被final修饰的类不可以被继承
final即为不可变
抽象(abstract)
现实中不存在的东西 在java中只声明不实现
抽象方法:使用abstract来修饰,不可以有方法体,直接用分号结束
抽象类:如果一个类中有抽象方法,这个类必须是一个抽象类
特点:
- 抽象类不可以创建对象
- 抽象类的子类必须重写父类中的方法
- 通过抽象类可以强制要求子类中必须有哪些方法
抽象类中可以有正常的方法
接口
将很多不相关的东西进行整合
接口实际上是一种特殊的抽象类
能继承接口的只能是接口,接口和类只能是实现
接口使用interface来声明,使用implements实现接口
类只能单继承,接口支持多实现
特点:
- 接口中所有的方法都是抽象方法,都是公开的
- 接口中所有的变量都是全局静态常量
- 当一个类实现了一个接口时,它必须实现接口中定义的所有方法,如果无法实现全部方法需要声明为抽象类
成员变量的初始值
java中所有的变量必须先声明,后赋值才能使用
java中的成员变量,在创建对象的时候,都会执行一次初始化操作,都会给一个默认值。
- 基本数据类型都为0
- 引用数据类型:NULL
object
所有的东西都是对象
在java中所有的类都要继承object
object是一个类,所有类的根,都要继承object
我们写的类及时不写继承,也会默认继承object
equals
equals是object类提供的一个方法,用来判断两个对象是否相等
对equals的比较不满意可以进行重写
equals对字符串的比较是比较字符串的内容
toString
toString()对一个对象的字符串的表示形式
java官方推荐你重写这个方法
instanceof
判断XXX对象是不是XXX类型的
用法: XXX对象 instanceof 类型
内存分析
- 1.堆:主要存放对象
- 2.栈:局部变量,基本数据类型的变量
- 3.代码区:类和方法
- 4.数据区:常量池和静态变量