我正在用Java学习OOP,但遇到了一个问题。我需要创建一个自定义对象Folder
,该对象保留FTPFile
对象的功能,并向其添加更多功能。
FTPClient client = new FTPClient();
FTPFile[] folders = client.listFiles();
我需要将数组folders
中的所有对象从FTPFile
转换为Folder
对象,然后考虑在子类的构造函数中设置超类的状态:>
public Folder(FTPFile ftpF) {
super.setName(ftpF.getName());
super.setLink(ftpF.getLink());
super.setHardLinkCount(ftpF.getHardLinkCount());
super.setGroup(ftpF.getGroup());
super.setSize(ftpF.getSize());
super.setTimestamp(ftpF.getTimestamp());
super.setType(ftpF.getType());
super.setUser(ftpF.getUser());
}
但是我不知道这是否是一个好习惯。我应该这样做还是应该以{{1}}对象的状态存储FTPFile
对象并在需要时调用其功能?
答案 0 :(得分:0)
还是我应该将FTPFile对象存储为Folder对象的状态,并在需要时调用其功能?
您遇到了delegation的想法。这是一种无需继承即可扩展类功能的灵活方法。
d
假设您要扩展class Folder {
private FTPFile ftpFile;
public FTPFile(FTPFile ftpFile) {
this.ftpFile = ftpFile;
}
// more code..
}
的方法setName(string)
,并且所有名称都应大写:
FTPFile