java吧 关注:1,244,757贴子:12,721,270
  • 17回复贴,共1

刚学了方法的重载和重写,有一个疑问,求解答

只看楼主收藏回复

方法的重载我觉得用处还是挺大的,但是方法的重写有些疑惑,子类的方法返回值类型,方法名,行参列表都必须同时和父类相同,才叫方法的重写,只是方法体不一样!那既然这样,干嘛不重新写一个方法重新名个名,非要重写父类这个方法呢


来自Android客户端1楼2015-11-23 10:19回复
    不用想两个名字


    IP属地:浙江来自iPhone客户端2楼2015-11-23 10:26
    回复
      首先你得知道为什么需要多态。
      我定义一个接口,需要传入父类的对象,因为多态的机制,是可以传入子类的对象。但子类处理某件事的方式不一样,而接口就是调用的父类的这个方法,所以子类只能重写该方法,让接口通过通过父类类型的对象调用到实际子类对象的方法


      青铜星玩家
      百度移动游戏玩家均可认证(限百度账号),去领取
      活动截止:2100-01-01
      去徽章馆》
      IP属地:湖北4楼2015-11-23 10:32
      收起回复
        这两个都是实现多态的机制,重写是出现在一个类中的,重载是出现在子类和父类之间的,比如有一个方法要使用邮箱作为参数那你只能传一个参数,还有一个方法要使用邮箱和密码,这时候你要传两个参数,这两个方法就是重写。等到后面你就知道这两个都很有用,但是你却没有明显的感觉到它的用处,因为它用的太普遍,普遍到让你觉得这就应该这样。


        来自Android客户端5楼2015-11-23 11:19
        回复
          上课了,不说了,


          来自Android客户端6楼2015-11-23 11:20
          收起回复
            因为传递这个对象的时候,就是写死了调用这个方法。


            IP属地:广东来自Android客户端7楼2015-11-23 13:17
            回复
              重写,某程度上跟抽象、接口,有联系。你要学到后面。


              IP属地:广东8楼2015-11-23 13:44
              回复
                多态一般后面用多了才能懂,比如动物类的吃东西方法,在狗的类里要重写成啃,鸡的类里要重写成啄


                IP属地:山西9楼2015-11-23 14:19
                收起回复
                  就是看你具体想实现哪些


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


                    IP属地:广东11楼2015-11-23 18:32
                    回复