if (!(obj instanceof Course)) return false; Course course = (Course) obj; 为什么已经判断了obj属于Course类型了还要进行强转?
你表达清楚了 但是也说明了你没学清楚多态....
当父类引用指向子类对象时,只能使用父类中的属性和方法,obj是Object类型的 这个类里面是没有name这个属性的,所以必须得强转之后才能使用name这个属性
第二个Course course = obj 写法是错误的 这里面obj是Object类型, 子类不能直接指向父类对象所以必须加强转
改为Course course = (Course) obj;
楼主可以这样想,如果传入的是Course的一个子类呢?当然也算是Course类的吧?但是此时要引用父类的属性,所以要强转,因为这里是形参,有很多种情况要考虑。
obj传进来的时候不是Course类而是他的父类Objece类
至于为什么要强转呢。因为父类不可以使用子类的属性!
如果一个人是警察 你也知道他是警察了 一般是他要穿上警服 才去巡逻执法(不要说特殊情况了)
就是判断了obj是Course 才能够进行强转 instanceof 就是提前判断能否强转