int*_*_32 3 java oop inheritance android instanceof
我有两节课:
class ItemInfo {
public View createItemView() {
View v;
// ...
v.setTag(this);
return v;
}
}
class FolderInfo extends ItemInfo {
@Override
public View createItemView() {
View v;
// ...
v.setTag(this);
return v;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我用它:
FolderInfo folderInfo;
// Create it here
ItemInfo itemInfo = folderInfo;
View v = itemInfo.createItemView();
Object objectTag = v.getTag();
Run Code Online (Sandbox Code Playgroud)
然后我通过instanceof检查objectTag的类型,它是ItemInfo!为什么?
如果你这样做:
if (itemInfo instanceof ItemInfo) {
System.out.println("OK!");
}
Run Code Online (Sandbox Code Playgroud)
你将会看到"OK!"被打印,因为它FolderInfo是一个子类ItemInfo- 所以a FolderInfo也是一个ItemInfo对象.
继承意味着从子类到超类之间存在"是一种"关系 - 请参阅Liskov替换原则.
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |