您的位置:首页 > 编程语言 > C#

C# 中 重载,重写,隐藏的区别

2016-01-22 14:04 441 查看
重载: 就是写多个同名方法,参数个数不同或类型不同或返回值不同

重写:子类中实现的方法必须加override关键词 普通非抽象父类需要virtual 抽象类里面抽象方法abstract 接口的实现也是重写(更准确的应该说是实现,但是子类不需要override)
隐藏:等同于覆盖,A类(父类)可以普通实现,B类继承,new 一个和A中一样的方法。可以说算是重写方法的实现,但是不会修改到A中的方法。

具体区别如下:

static void Main(string[] args)
{
B b = new B();
b.ClassA();
A a = b;
a.ClassA();

Console.WriteLine("\n");

B2 b2 = new B2();
b2.ClassA2();
A2 a2 = b2;
a2.ClassA2();

Console.ReadKey();
}
}

//
class A
{
public void ClassA()
{
Console.WriteLine("A.ClassA()");
}
}
class B : A
{
new public void ClassA()
{
Console.WriteLine("B.ClassA()");
}

}

//
class A2
{
public virtual void ClassA2()
{
Console.WriteLine("A2.ClassA2()");
}
}
class B2 : A2
{
public override void ClassA2()
{
Console.WriteLine("B2.ClassA2()");
}
}

}


C++也是类似

class A
{
public:
virtual void print()
{
printf("AAAAAA");
}
};

class B :public A
{
public:
void print()
{
printf("BBBBB");
}
};

int main()
{

B *b = new B();

b->print();
A *a = b;
a->print();
return 0;
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: