c#中多态的学习与使用方法以及重写(覆盖)和重载的区别
来源:互联网 发布:留学中介机构 知乎 编辑:程序博客网 时间:2024/05/16 16:22
首先我们用一个抽象方法进入主题
abstract class Animal //抽象类(父类)
{
public string _name;
public string _color;
public int _age;
public abstract void Eat();//抽象方法
//抽象方法 ,让子类去实现该功能
//抽象方法必须被子类重写(override)
//抽象方法只需声明,无需实现,也就是没有方法体。
//定义了抽象方法的类必须是抽象类。
//抽象类中不一定全是抽象方法 可以有一部分具体实现
//抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类
}
class Dog:Animal //子类
{
public override void Eat()//方法的重写(覆盖)
{
Console.WriteLine(“狗狗吃骨头”);
}
}
static void Main(string[] args)
{
Dog dog = new Dog();
dog.Eat();
dog.Move(1,1);
//抽象类不能被直接实例化,只有它的非抽象子类可以创建对象
Animal animal = new Dog();
//animal.Eat();//多态
Master master = new Master();
master.Feed(new Dog());
/*
提高程序的扩展性
多态(polymorphism)即一个名字具有多种语义。在面向对象中指一个方法可以有多种实现版本。类的多态表现为方法的多态,方法的多态主要有重载(overload)和覆盖(override)。
重载是同一个类中,有多个方法同名,但是参数列表不同
abstract class Animal
{
public void Move(int x)
{
Console.WriteLine(“左右移动”);
}
public void Move(int x,int y)
{
Console.WriteLine(“左右和前后移动”);
}
}
参数列表不同:
1.参数的个数不相同
2.参数的类型不同
3.参数的次序不同
注意:返回值类型不同无法确定重载
覆盖是子类中定义了父类同名方法,且参数列表和返回值相同
1.父子类内部
2.父类的方法virtual修饰一下 形成虚方法
或者为抽象方法:abstract修饰
3.子类中的方法务必和父类的方法同名
override关键字修饰一下
4.其他的通通一样(访问修饰符 修饰符 返回值类型 参数列表)
*/
}
}
- c#中多态的学习与使用方法以及重写(覆盖)和重载的区别
- 重载与重写(覆盖)的区别
- 重写(覆盖)和重载的区别
- c++ 重载、重写(覆盖)以及重定义的区别:
- 重写、覆盖和重载的区别?
- 方法重载和重写(覆盖)的区别
- 重载和重写(覆盖)的区别
- 重载,重写(覆盖)和隐藏的区别
- C++中重载、重写(覆盖)和隐藏的区别
- C++中重载、重写(覆盖)和隐藏的区别
- C++中重载、重写(覆盖)和隐藏的区别
- C++中重载、重写(覆盖)和隐藏的区别
- C++中重载、重写(覆盖)和隐藏的区别
- 重载、重写(覆盖)和隐藏的区别
- C++中重载、重写(覆盖)和隐藏的区别
- C++中重载、重写(覆盖)和隐藏的区别
- 重写(覆盖)、重载的区别
- C++中重定义、重写、重载的区别以及隐藏与覆盖的访问
- 优化Java调用Nashorn引擎的性能
- error LNK2005重定义解决方法
- angular2 router中的路由跳转navigate
- js Array.from 从类似数组 或者可迭代对象中返回数组
- zabbix图形页面数据字段显示为方框或乱码
- c#中多态的学习与使用方法以及重写(覆盖)和重载的区别
- android之imageView自适应
- 简单实现Android图片三级缓存机制
- 【每日一道Linux题】
- 【Mysql优化三章】第一章
- 【每日一道算法题】
- 【每日一道算法题】
- 【每天一道Linux命令】
- 【设计模式123】单例模式