java多态——基础

时间:2023-03-09 17:32:31
java多态——基础
  1. 多态
定义: 一个接口,多种实现,就是多种状态    
价值:
特点:多态存在的特点,就是必须要有继承、覆盖、父类变量调用子类对象
场景:
  • 首先检查父类中是否有该方法,如果没有,则编译错误;如果有,则检查子类是否覆盖了该方法。
  • 如果子类覆盖了该方法,就调用子类的方法,否则调用父类方法。
怎么用:
声明:class Aniaml = new Cat();
  1. 动态绑定
怎么用:
m(new Animal(),new Food());
  1. 对象转换
分类:
  • 显式转换(强制转换)
  • 隐式转换(自然而然的转换,类比基本数据类型转换)
怎么用:
Person p1 = new Student();//隐式转换,小的转大的
Student s1 = new Person();//需要强制转换
如:Student s1 =(Student) new Person();
注意:如果父类对象不是子类的一个实例,就会报一个错误:java.lang.ClassCastException   类转换异常
  1. instance运算符
定义:instance是java的关键字,
价值:判断源对象是否是目标类的实例
怎么用:
b instanceof A //检验b是否是类A的实例
  1. 防止扩展和覆盖
关键字:final
价值:为了防止扩展和覆盖
特点:类和方法是终极的,不能再扩展和覆盖了
场景:有时候方法和类不允许被覆盖和扩展
分类:(例子)
  • Math
  • StringBuilder
  • StringBuffer
怎么用:
public final class Person
//定义这个类是个终极类,不可以被扩展
public final void eat(){
//定义这个方法是个终极方法,不可以被覆盖
{
  1. Object类的equals方法
价值:测试两个对象是否相等
特点: equals()方法只能比较引用类型
场景:   当用 equals() 方法进行比较时,对类 File、String、Date 及包装类来说,是比较类型及内容而不考虑引用的是否是同一个实例。
怎么用:
person p1 = new Person();
Student s1 = new Student();
s1.equals(p1);//判断S1对象和p1对象是否相等
比较:equals与==的区别
==
定义:看引用变量是否指向同一对象
特点: “==”可以比较引用类型及基本类型。用“==”进行比较时,符号两边的数据类型必须一致(可自动转换的数据类型除外),否则编译出错,而用 equals 方法比较的两个数据只要都是引用类型即可。
怎么用:
person p1 = new Person();
Student s1 = new Student();
boolean flag = (p1 == s1);//判断S1和p1两个引用变量是否指向同一对象
  1. 数组线性表
关键字;ArrayList
价值:用来存储对象的类,ArrayList类提供存储不限定个数的对象。
怎么用:
1. 首先创建一个空的线性表
java.util.ArrayList list = new java.util.ArrayList();
2. 然后调用各种方法: