JavaSE/13.面向对象特性之多态
梧桐落。又还秋色,又还寂寞。
——李清照《忆秦娥》
## 1. 面向对象特性之多态定义:同一个行为,具有不同的多种表现形式 。
多态是继封装、继承之后,面向对象的第三大特性。
使用多态的前提条件
有以下几条:
继承或者实现【二选一】(接口和抽象类)
方法的重写【意义体现:不重写,无意义】
父类引用指向子类对象【格式体现】
1.1 多态的具体使用
1 | /** |
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误。也就是说,不能调用子类拥
有,而父类没有的方法。编译都错误,更别说运行了。这也是多态给我们带来的一点”小麻烦”。所以,想要调用子
类特有的方法,必须做向下转型。
1.2 instanceof 关键字
判断某个对象是否属于某个类型。
子类型属于父类型。
源码分析:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}