C#多态的表现-方法重载,方法重写以及密封类的特点

方法重载

方法重载:构造函数就属于特殊的方法重载

 方法重载:是指同一个类中相同方法的不同行为

 方法重载的特点:

 1.方法名必须相同

 2.参数列表必须不相同(这里的不相同是指参数类型,参数个数以及参数顺序

 3.在有相同参数列表个数的前提下,函数方法返回值不作为判断方法是否重载的依据


class Math

{

public  int sum(int a,int b)

{

return a + b;

}

public float sum(int a, float b)

{

return a + b;

}

public float sum(float a, float b)

{

return a + b;

}

public float sum(float a, int b)//不同参数类型的顺序也可以作为方法重载的依据

{

return a + b;

}

}

在调用这些方法时,只要将参数写成那种方法的参数列表就可以了



方法的重写

 方法的重写:是指在继承关系中不同类之间的比较和研究

 第一个关键字:virtual(虚拟的)

 用virtual修饰的方法称之为虚方法

 virtual一般情况下和override成对出现

 如果子类重写了override,则父类必须拥有virtual修饰的方法

 反过来则不一定成立,因为我们还有方法覆盖


第二个关键字:override(重写)

 为什么要使用方法重写呢

 1.使用虚方法其实就是对目前的程序不满意,暂时方法功能是实现了的,但是不够完美,希望后面的程序员通过重写父类方法的方式,进行功能上的优化

 2.可以通过继承系统提供的类,去修改系统类中提供的虚方法


 方法重写需要注意的地方

 1.不能重写父类中有sealed修饰的方法

 2.不能重写父类中用static修饰的方法

 3.如果父类中存在abstract方法,子类必须重写



class Animal//动物类有一个行为(方法)就是叫

{

public virtual void jiao()//使用虚方法实现叫这个方法,但是这个方法不够完美,需要子类去调用重写

{

Console.WriteLine ("叫");

}

}

class Cat:Animal//子类继承父类

{

public override void jiao()//子类重写父类方法

{

Console.WriteLine ("猫叫");

}

}

class Laohu:Animal

{

public override void jiao()//子类重写父类方法

{

Console.WriteLine ("老虎叫");

}

}

class Lion:Animal

{

public override void jiao()//子类重写父类方法

{

Console.WriteLine ("狮子叫");

}

}

这就体现了面向对象中多态。


密封类


 密封类:俗称断子绝孙类....

 如果我们的类是密封类,那么就意味着不能有任何派生类,但是密封类可以拥有父类

 C#中密封类用sealed关键字,sealed可以将类或者方法声明为密封类或者密封方法,

 对于密封类来说,不能继承该密封类。

 对于密封类来说,不能重写该密封方法

 密封类不能使用protected,访问修饰符

 密封类不能使用virtual

 密封类的不可继承性,所以密封类不能声明为抽象的,即sealed关键字不能和abstract共同使用


 如果用sealed修饰方法,必须要遵循一个条件:这个类要有父类,并且重写了父类的某一个虚方法才可以用sealed修饰,否则是绝对不行

密封类的作用就是防止外界修改到本类,破坏类的内部构造。


class A//创建父类A

{

public virtual void SayHi(){}//父类A中有虚方法

}

sealed class B:A//父类满足有虚方法这个条件,可以用sealed修饰

{

public override void SayHi (){}//重写了父类的虚方法

}

class C:A

{

public sealed override void SayHi (){}

}

class E:C

{

public override void SayHi (){}//这样的写法是错误的,因为在C类中这个方法是用sealed修饰的,是密封方法所以无法被重写,编译不能通过

}

class D:A//其他类继承A这个父类与B这个密封类没有关系

{

public override void SayHi(){}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,577评论 18 399
  • 1. [C#语言基础]请简述拆箱和装箱。 答: 装箱操作: 值类型隐式转换为object类型或由此值类型实现的任何...
    胤醚貔貅阅读 4,770评论 1 29
  • 阳光正好 何人在远方
    J木习阅读 141评论 0 0
  • 今天凌晨零点上淘宝买东西,七点起来去做饭,中午也没睡觉,真的感觉太困了~
    柳叶棒棒糖阅读 194评论 1 1