1.Object类
是java中所有类的父类
在java中的所有类都会直接或者间接的继承自Object类
toString()方法
toString() 把对象数据已字符串的形式表示
直接打印一个对象的引用的时候,默认打印的调用toString() 方法的返回值
需求:在打印一个javabean类型对象的引用的时候,其实是想要了解这个对象的基本
信息–>成员变量的值
解决:在子类中重写toString方法,因为打印对象引用时候默认会调用toString(),toString功能需要,实现不满意就重写
equals()方法
== 可以比较所有数据类型的数据,基本数据类型->数据值 引用数据类型->比较对象地址
equals 只能比较引用数据类型的数据
比较两个数据是否相等 对象1.equals(对象2)
Object类中equals方法的实现->默认比较对象的地址,可以通过重写equals方法实现比较对象的内容
需求: 比较两个引用数据类型对象的时候,想要比较两个对象的所有成员变量的值是否都相等,而非比较对象地址
解决: 子类中重写equals方法,实现比较对象内容非地址
2.多态
多态–>面向对象三大特性
多种形态->多种表现形式
多态的最终体现:
父类的引用指向子类的对象
多态的前提:
继承关系
实现关系
多态的使用:
当多态调用时候,会调用子类中的重写方法
多态调用成员特点:
成员变量 :
编译运行看父类|左边|类型
成员方法 :
编译看父类,运行找子类
编译看左边,运行找右边
编译看类型,运行找对象
父类引用指向子类对象
多态: 行为的多态,行为的不同实现方式
行为->方法->方法的重写
多态需要配合方法的重写才有意义
多态引用对子类内容不可见
多态的好处:
解耦 :
灵活性
便于后期维护
基本数据类型 :
自动类型提升 : 小–>大
int i = ‘a’;
强制类型转换 : 大–>小
byte b = (byte)i;
转型:
引用数据类型:
父类->大
子类->小
向上转型: 小->大
Person p = new Student();
向下转型: 大->小
Student s = (Student)p;
通过多态的引用调用子类中新增内容的时候,需要向下转型
3.abstract抽象类
被abstract修饰的的类就是抽象类
被abstract修饰的的方法就是抽象方法
1.抽象类中可以存在具体方法,可以存在抽象方法
可以存在成员变量.构造器
2.抽象类不能实例化,(不能创建对象)
3.一个抽象方法必须被重写,重写可以为抽象方法定义方法体
4.抽象类的使用:通过具体子类的对象使用
具体的子类:重写了父类的抽象方法
抽象的子类:没有重写父类的抽象方法
5.一个抽象方法一旦被重写,后续是否需要重写根据需求而定.