«interface»
FileItem
+ size(): int
File
- bytes: int
+ size()
Folder
- children: List
+ size()
+ add(item)
Leaf and branch, one type
1interface FileItem { int size(); }2class File implements FileItem { ... }3class Folder implements FileItem {4 List<FileItem> children; // files AND folders5}