多态
- 多态的常见形式:
父类 对象名称 = new 子类构造器
接口 对象对象 = new 实现类构造器
- 多态中成员访问特点
方法调用:编译看左边 运行看右边
变量调用:编译看左边 运行看左边
前提: 有继承/实现关系 有父类引用指向子类对象 有方法重写
优势:
- 多态形式下 右边对象可以实现解耦合
- 定义方法时 使用父类作为参数 该方法就可以接收父类的一切子对象 体现出多态的扩展性
缺点:
不能访问子类独有功能
多态类型转换
强制类型转换
1.子类 对象变量 = (子类)父类类型的变量
2.作用:解决多态的劣势 实现调用独有功能
注意:
如果转换后的类型和真实类型不是同一类型 在转换时会出现ClassCastException
建议使用instanceof判断类型再强转
变量名 instanceof 真实类型
常用API
Object
方法名 | 说明 |
---|---|
public String toString | 返回地址 |
public Boolean equals(Object o) | 默认是比较当前对象与另一个对象的地址是否相同 返回true/false |
Objects
对象进行内容比较时建议使用Objects
案例:输出数组内容
public class Main {
public static void main(String[] args) {
int[] arr1 = null;
System.out.println(toString(arr1));
int[] arr2 = {10,88,100};
System.out.println(toString(arr2));
}
public static String toString(int[] arr){
if(arr != null){
StringBuilder sb = new StringBuilder("[");
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i]).append(i == arr.length -1?"":",");
}
sb.append("]");
return sb.toString();
}else{
return null;
}
}
}