黑马程序员_多态、抽象、接口

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------


多态

多态就是对象可以表现多个类型的能力,比如说类,子类可以有父类的方法, 也可以重写父类的方法等,有多种能力。

类的多态表现为,子类可以有与父类方法名相同的方法,子类可以重写父类的方法


如果子类和父类的方法重名了,编译的时候会报警告也就是报绿线,如何把绿线干掉呢?

第一种方法:我们可以在子类方法的访问修饰符后面加new。

第二种方法:我们可以在父类的方法上加一个virtual修饰,然后子类在继承父类的时候,可以用override来重写父类的方法,这两个都是在访问修饰符后加。


当子类与父类方法名相同时,有两种情况:

1、参数不同时,表现为重载

2、参数相同时,表现为重写或者覆盖


覆盖就是子类在继承时,当与父类方法名相同,如果不重写父类的方法,可以加new关键字,隐藏父类方法,也就是覆盖。


怎么重写父类方法?

1、在父类的访问修饰符后加virtual修饰,这时,父类为虚方法

2、在子类的访问修饰符后加override,重写父类方法


重写与重载的区别

重载是方法的名称相同,参数或参数类型不同,进行多次重载以适应不同的需求。重载是面向过程的概念

重写是进行父类中方法的重写。重写是面向对象的概念

 重写与重载不一样,要区分开


什么叫虚方法?

方法中有virtual修饰的叫虚方法

虚方法可以在子类中通过override关键字来重写

常见的虚方法:Tostring()  Equals


虚方法与重写需要注意几点:

1、方法不能用static修饰,也就是静态方法不能重写也不能是虚方法

2、重写时,子类的参数必须与父类相同。

3、虚方法不能用private修饰,也就是说virtual不能与private一起使用


抽象

如果一个方法,有abstract修饰,那么这个方法就叫抽象方法,抽象方法所在的类,也要用abstract修饰,这个类也叫抽象类

抽象方法没有方法体,直接分号结束  如:public abstractvoid Shout(); 


如果一个类继承了抽象类,那么,这个类中的方法,必须要重写父类中的抽象方法。

 

简单说,有abstract修饰的方法和类叫抽象方法抽象类,抽象方法没有方法体,所以在继承的时候子类必须要重写方法,抽象方法只能在抽象类中。


注意:

1、抽象方法没有方法体

2、抽象成员只能存在于抽象类中

3、抽象类可以有非抽象成员

4、抽象类的派生类必须实现抽象方法体

5、抽象类只能用作父类,无法实例化


虚方法与抽象方法的比较:



接口

什么是接口?有interface修饰的,完全抽象的一种约定,其中的成员只有定义,没有实现内容

接口的名称通常以大写I开头,如IFly  IOny

语法:

[访问修饰符] interface 接口名

{

       接口成员定义

}


接口中可以有属性、方法,但是未实现,就是不能直接用,因为接口成员还没定义方法体。如:

    interfaceIFly  //定义了一个接口

    {

        voidFly();  //接口成员

    }


接口是用来实现的,所有成员默认为public


怎样实现一个接口?

与继承类似,但必须有实现内容,也就是多了一段代码,代码中为要实现的内容,然后就可以调用接口内的方法了。如:

            publicvoid Fly() 

            {

                Console.WriteLine("我是超级美女"); //实现内容

            }


如果一个类只实现接口,冒号后直接接口名,即继承了类又实现了接口,在父类后逗号+接口名,类必须写在前面,接口一定是在后面。如:

class Student:Person,IComparable


一个类只能继承一个父类,但可以实现多个接口


接口与类的异同

不同点:

1、接口不能直接实例化

2、接口不包含方法的实现

3、接口可以多实现,类只能单继承

4、类可以在不同的源文件之间进行拆分,就是可以有多个文件


相同点:

接口、类和结构都可以从多个接口继承

接口类似于抽象父类:继承接口的任何非抽象类型都必须实现接口的所有成员。

接口和类都可以包含事件、索引器、方法和属性


C#支持多重继承么?

类之间不支持,接口之间支持。

类对接口叫做实现,不叫继承。


类只能有一个父类,但可以有多个接口,如果说父类是爹,接口就相当于能力,可以有多个能力,但不能有多个爹。


当程序编译时没出错,运行出现错误,我们可以调试程序,找出错的原因,然后解决问题。

程序调试的步骤
1、猜测出错位置,设置断点
2、单步运行
3、观察变量
4、发现问题
5、修正代码,重新运行
6、解决问题

Ps:程序出现异常或者错误时,千万要冷静淡定,看下异常提示或错误原因,一条条检查代码,或者设置断电调试下,看下是不是哪里代码写漏还是写错,补上更正。。


---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值