我理解是关于方法的重写,其实是为了子类表现自己独有的特点才去重写方法的,说直接点吧,人作为一个类存在,但是作为人来说有一个getName()的方法,很容易理解人本身有一个获取名字的方法,但是假如他有两个子类,一个叫外国人,另一个叫中国人,这个时候,你想想一个外国人和一个中国人的名字的表现能一样吗?外国人的姓是在后面的,而中国人的姓是在前面的,所以就需要重写这个方法,至于你所说的为什么不重写定义一个方法,你想想,作为中国人和外国人都是人的子类,那么他们都必然都继承了人这个类的所有方法,也就是说getName()的方法也继承了,既然已经存在一个获取姓名的方法,还有必要去重新写一个方法叫getName1()的方法吗?这样一来是会导致代码的多余,其次会使这个继承的关系中变得过去庞大,也复杂。
至于多态的内容来说,这就更加容易理解了,比如说,我现在一个方法需要就是仅仅需要一个人,我不管你是外国人还是中国人,但是作为人这个类来说又是抽象的(不知道楼主对抽象的理解怎么样?),所以不能直接实例化,于是,这个时候你就必须是给我一个人,但是作为你来说,你在实例化的过程中不能给我一个抽象的东西,因为我这个方法可能会需要这个人才能有意义,假如你给我一个中国人的实例化,那么最后我的方法来获取你关于人的对象在获取姓名的时候,那么就是调用的中国人的getName()的方法,反之亦然!