重载、重写、重构

【前言】

在之前我们接触过重写、重载。今天我们学习到了重构,那么他们三者有什么区别呢?下面将为您揭晓

【正文】

一、重构

1.重构是什么?

重构就是改善现有的代码设计,让代码更加符合面向对象规则

2.怎么修改代码的设计?

示例:

上次我们说到小狗和小猫来报名参加叫声比赛,如今又来了小羊和小牛来报名叫声比赛,我们可以继续写一个牛类和羊类,然后来继承动物类,这样利用多态显然是可以实现的。但是我们发现在写代码的过程中,子类当中有很多代码是重复的。那么怎么才能更好的让我们的程序能体现面向对象的规则呢,我们可以利用重构来解决这个问题。

首先我们把重复的这个Shout()的方法体放到动物类中,去掉virtual 。然后把声音叫的部分改成另一个方法getShoutSound

class Animal
    {
        protected string name;
        public Animal(string name)
        {
            this.name = name;
        }
        public Animal()
        {
            this.name = "无名";
        }
        public string Shout()
        {
            string result = "";
            result += getShoutSound() + ",";
            return "我的名字叫" + name + "" + result;
        }

        // 得到叫声的虚方法,让子类与重写。      
        protected virtual string getShoutSound()
        {
            return "";
        }
    }
    class Cat :Animal
    {
        public Cat ():base()
        {

        }
        public Cat (string name):base( name)
        {

        }
        //重写父类的方法,返回叫声
        protected override string getShoutSound()
        {
            return "喵";
        }

    }

这样当我们再增加动物的时候,只需要给子类当中的叫声方法就可以了。这样写是不是更简便呢,也符合面向对象的原则。

二、重写

重写就是在父类当中定义一个虚方法,然后子类去重写,来实现自己的功能。方法名、参数、返回值必须是同样的。

三、重载

        重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数。

比如现在有许多小猫出生,有的要起名字,有的不需要起名字。那么我们就可以用方法重载。

 

现在我们知道了重写、重载、重写所存在的意义了,其实他们都是为了让程序更好的实现面向对象的原则。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
重载(Overloading)和重写(Overriding)是Java中两个重要的方法相关的机制。 重载是指在一个类中定义多个方法名相同但参数列表不同的方法。重载方法通过参数的类型、个数或顺序的不同来区分。在Java中,编译器会根据调用的方法的参数类型来确定具体调用哪个重载方法。重载方法并不会改变方法的返回值类型。 重载的实现原理是通过在编译阶段静态绑定生成不同的字节码来实现。编译器会根据调用方法的参数类型和数量的不同来选择合适的方法。 重写是指子类中定义一个与父类中方法名、返回值类型和参数列表完全相同的方法,并在该方法内部提供新的实现。重写方法通过动态绑定在运行时确定具体调用哪个方法。重写方法必须与父类方法具有相同的返回值类型或其子类型。 重写的实现原理是通过在运行时动态绑定在方法调用时确定具体调用的方法。在调用重写方法时,Java虚拟机会根据实际对象的类型来选择合适的方法。 Java中的方法表是一个用于存储类的方法信息的数据结构,包括方法名、返回值类型、参数列表、访问修饰符等。每个类都有一个方法表来记录其方法的信息。 当调用一个方法时,Java虚拟机会根据方法的调用方式(静态绑定还是动态绑定)来查找方法表,找到对应的方法并执行。对于重载方法,Java虚拟机会根据方法的参数类型来选择合适的重载方法。 总结起来,重载重写是Java中处理方法多态性的两个机制。重载通过编译器的静态绑定实现,重写通过运行时的动态绑定实现。方法表是记录类方法信息的数据结构,用于在方法调用时确定具体的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张铎(信念)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值