经典误解了。
其实继承的意思仅仅是“接口兼容”,但里面就另起炉灶了。
继承,仅仅是告诉编译器,我可以完全替代被我继承的那个烂货——所以用户之前用了Random,现在要改成SecureRandom的话,只要把new Random改成new SecureRandom就行了,其他都不需要动。
实现继承有百害而难有一利,所以用起来必须谨慎,“优先使用组合而不是继承”。
换句话说,看到继承,第一时间想到的不是“接口兼容”而是“实现继承”的,都是缺了实践的毒打……