在包内进行继承时和在继承专为继承而设计的超类时是安全的,但是继承一些设计初衷并不是为了继承而涉及的类时就不安全了,因为这种类可能在后面的版本中发生变化,如添加新的方法,这个方法可能会与子类中的已有方法冲突,比如子类中有 int getBirthYear()方法,而在新的超类中有一个 String getBirthYear()方法,这样就会直接导致编译不通过;还有就是超类修改了原有方法的实现,而子类中的某些方法依赖于原超类中方法实现中的某些约定,而新的超类中该约定被打破了,那么虽然不会导致编译不通过,但是却会导致结果异常。