重载OverLoad。隐藏new

<1>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{

    class A
    {
        public void SayHello()
        {
            Console.WriteLine("我是父类的SayHello方法");
        }
    }

    class B : A
    {
        public new void SayHello() //子类利用newkeyword隐藏了父类的同名方法
        {
            Console.WriteLine("我是子类的SayHello方法");
        }
    }

    //构成方法重载的条件:<1>:函数名同样  <2>:參数类型不同,或者參数个数不同
    //注意:函数返回值类型的不同 不是函数重载的推断条件。
    class C
    {
        public void Add(int a,int b)   //下面4个Add方法构成了重载
        {
            Console.WriteLine(a + b);
        }
        public double Add(double a, double b)
        {
            return a + b;
        }
        public void Add(int a)
        {
            Console.WriteLine(a);
        }

        public string Add(string a, string b)
        {
            return a + b;
        }
    }
    class Inheritance
    {
        static void Main(string[] args)
        {

            B b = new B();
            b.SayHello();

            Console.ReadKey();
        }
    }
}
时间: 2024-07-31 14:32:27

重载OverLoad。隐藏new的相关文章

c# 中面相对性的三个特点:封装,继承,多态, 以及c#中隐藏(new)和方法重写(override)和重载(overload)的区别

封装 1)封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问,通常有两种访问方式:set 设置,get 获取. 2)封装结果:存在但是不可见. 3) 访问修饰符 声明的可访问性                                 含义 public                                    访问不受限制. protected                              访问仅限于本类或者其子类(可以跨程序集). p

重载(overload)、覆盖(override)和隐藏(hide)

写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖(override),隐藏(hide).在早期的C++书籍中,可能翻译的人不熟悉专业用语(也不能怪他们,他们不是搞计算机编程的,他们是英语专业的),常常把重载(overload)和覆盖(override)搞错! 我们先来看一些代码及其编译结果. 实例一: #include "stdafx.h" #include <iostream.h> class CB { public: void f(int) {

重载(overload)、覆盖(override)、隐藏(hide)的区别

这三个概念都是与OO中的多态有关系的.如果单是区别重载与覆盖这两个概念是比较容易的,但是隐藏这一概念却使问题变得有点复杂了,下面说说它们的区别吧. 重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同.调用的时候根据函数的参数来区别不同的函数. 覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现.即函数名和参数都一样,只是函数的实现体不一样. 隐藏是指派生类中的函数把基类中相同名字的函数屏蔽掉了.隐藏与另外两个概念表面上看来很像,很难区分,其实他们的关键区别就

Java 重写(Override)与重载(Overload)

1.重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变.即外壳不变,核心重写! 参数列表和返回值类型必须与被重写方法相同. 访问权限必须低于父类中被重写方法的权限. 父类成员方法只能被子类重写. final 和static修饰的方法不能被重写,但是static 的方法可以被再次声明. 父类方法不能被继承,则不能重写 父类和子类在同包内,子类可以继承父类所有方法除了final修饰,和private修饰的. 父类和子类不同包,public 和pr

JavaSE入门学习15:Java面向对象之J重写(Override)和重载(Overload)

一重写(Override) 如果子类对继承父类的方法不满意,是可以重写父类继承的方法的.重写是子类对父类的允许访问的方法的实现 过程进行重新编写.返回值和形参都不能改变.即外壳不变,核心重写.当调用方法时会优先调用子类的方法. 语法规则: A返回值类型 B方法名 C参数类型及个数 都要与父类继承的方法相同,才叫方法的重写. 重写的好处在于子类可以根据需要,定义特定于自己的行为.也就是说子类能够根据需要实现父类的方法.在面 向对象原则里,重写意味着可以重写任何现有方法. 实例: Test.java

重载overload &amp; 重写 override

先说说面向对象3大特性 封装   //主要是由密封类,public/protect/private/Internal 来实现,通过不同的访问级别来控制 继承   //说的就是派生 多态   //多态性主要有override和overload来实现 override & overload重载叫overload,重写叫override: 重载某个方法是在同一个类中发生的! 重写是在子类中重写父类中的方法. 1.override: 父类:public virtual string ToString()

重载、隐藏、覆盖的区别

成员函数的重载.隐藏.覆盖有时候难以辨别,如果你还不太理解,请往下看. 首先,我们先了解一下成员函数被重载,覆盖,隐藏的特征. 成员函数被重载的特征: (1)在同一个类中 (2)函数名相同,参数不同(参数的个数,参数的类型) (3)无返回值 成员函数被覆盖的特征: (1)不在同一个类中 (2)函数名相同,参数相同 (3)基类函数必须有vritual关键字 成员函数被隐藏的特征: (1)不在同一类中 (2)函数名相同,若参数不同,无论有无vritual关键字,基类函数都被隐藏. 若参数相同,基类函

JAVA中继承时方法的重载(overload)与重写/覆写(override)

JAVA继承时方法的重载(overload)与重写/覆写(override) 重载-Override 函数的方法参数个数或类型不一致,称为方法的重载. 从含义上说,只要求参数的个数或参数的类型不一致就说两个函数是重载函数,而至于返回值是否一样,没关系.同时,重载可以发生在同一个类中也可以发生在继承关系中. class A { } class B extends A { public void fun(String data1) { System.out.println(data1); } pub

Java协变式覆盖(Override)和泛型重载(Overload)

Java 协变式覆盖(Override)和泛型重载(Overload) 1.协变式覆盖(Override) 在Java1.4及以前,子类方法如果要覆盖超类的某个方法,必须具有完全相同的方法签名,包括返回值也必须完全一样. Java5.0放宽了这一限制,只要子类方法与超类方法具有相同的方法签名,或者子类方法的返回值是超类方法的子类型,就可以覆盖.这样有什么好处呢?以Object类的clone方法为例: class Object {  ...  public Object clone() { ...

C++中的重载,隐藏,虚函数,多态浅析

直到今日,才发现自己对重载的认识长时间以来都是错误的.幸亏现在得以纠正,真的是恐怖万分,雷人至极.一直以来,我认为重载可以发生在基类和派生类之间,例如: 1 class A { 2 public: 3 void test(int); 4 }; 5 class B : public A { 6 public: 7 void test(int, int); 8 }; 9 10 void main() 11 { 12 B b; 13 14 b.test(5);  //错误,应该b.A::test(5)