
























1. 根本原因是你没理解面向对象
2. 可是看到下面代码的时候我就沉默了。你看第三行,它怎么自己实现了 CompareTo 方法
回答:一个类如果声明要实现( implements )一个接口,则必须对接口里所有的抽象方法进行实现,给出具体的逻辑。否则会发生编译错误
3. 难道我继承了 IComparable 接口不就是不想重复造轮子么?如果我自己重写 CompareTo ,那还不如不继承接口,自己直接手写 sort 方法不就完了?
回答:那你再想想,为啥你继承了这个接口,就自动获取了那个能力? 假设都有一个 Closeable 接口,MyClass 继承了它,为啥会自动获取 close 的逻辑?
不可能呀,肯定是你要自己写代码实现呀! 问题来了,为什么要用接口呢?
4. 为什么要用接口?
回答:一个具体的例子,假设你的程序要在关闭时释放所有资源(比如文件句柄、数据库连接等),那么你只需要写一个函数就能实现,但具体这个资源的释放
逻辑是怎么实现的,你不用管,你只需要知道,实现了 Closeable 接口的那些类都可以调用 close 方法,一般都拿来释放资源(文件句柄、数据库连接):
func CloseAll(List<Closeable> c) {
c.foreach(c -> c.close)
}
同理,对一组数组进行排序,不确定的是什么? 是数组里元素次序怎么确定,就是你这个 MyClass 的实例之间如何比较大小的问题。 这个是你需要去指定的。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。