zoukankan      html  css  js  c++  java
  • 重载还是覆写?

    重载和覆写是面向对象程序设计语言中两个基本的概念,然而这两个概念,初学者却往往混淆它们,昨天在论坛上看到有初学者把Override说成是重载,我觉得有必要再对这两个概念作一下解释。

    1.重载(Overload):

    类中定义的方法可能有不同的版本,它具有如下的特征:

    I.           方法名必须相同

    II.         参数列表必须不相同,与参数列表的顺序无关

    III.       返回值类型可以不相同

    示意代码:

    public class MyClass

    {

        
    public void Write(string _str)

        


            
    //

        }


        
    public void Write(string _str, string _target)

        


            
    //

        }


        
    public bool Write(string _str, string _target, bool _flag)

        


            
    //

        }


    }


    注意:参数列表必须不相同这一条由于泛型的出现,要特别小心。例如下面代码构成了重载,尽管它们的参数列表相同:

    public class MyClass

    {

        
    public void Write<T>(string _str)

        


            
    //

        }


        
    public void Write(string _str)

        


            
    //

        }


    }


    2.覆写(Override):

    子类中为满足自己的需要来重复定义某个方法的不同实现,它具有如下特征:

    I.           通过使用关键字Override来覆写

    II.         只有虚方法和抽象方法才能够被覆写

    III.       相同的方法名

    IV.       相同的参数列表

    V.         相同的返回值类型

    示意代码:

    public abstract class BaseClass

    {

        
    public abstract void Write(string _str);

    }


     

    public class SubClass : BaseClass

    {

        
    public override void Write(string _str)

        
    {

            
    //

        }


    }
  • 相关阅读:
    【智能合约】编写复杂业务场景下的智能合约——可升级的智能合约设计模式(附Demo)
    深入浅出区块链——零知识证明
    centos设置静态IP
    jQuery学习笔记(四):attr()与prop()的区别
    jQuery学习笔记(三):选择器总结
    jQuery学习笔记(二):this相关问题及选择器
    jQuery学习笔记(一):入门
    des解密不完整,前面几位是乱码的解决办法
    Python __init__.py 作用详解
    MySQL for mac使用记录
  • 原文地址:https://www.cnblogs.com/Terrylee/p/346128.html
Copyright © 2011-2022 走看看