度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1702|回复: 2
打印 上一主题 下一主题

[分享] 多态之虚方法、抽象类、接口

[复制链接]

182

主题

2120

帖子

4842

积分

论坛元老

Rank: 8Rank: 8

积分
4842
跳转到指定楼层
楼主
发表于 2020-4-29 17:49:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
虚方法:
1、在父类方法的返回值前加 virtual 关键字,标记为虚方法,表示这个方法可以被子类重写。
2、虚方法必须有方法体,方法体中可以没有任何内容。
3、子类可以根据需求选择性的是否重写虚方法。如果需要重写,在子类方法的返回值前加 override 关键字。
4、子类在重写虚方法时,可以根据需求选择性的是否使用 base 关键字调用父类中的该方法。
虚方法语法格式如下:
public class Father
{
    public virtual void Do()
    {
        //.....
    }
}
public class Son : Father
{
    public override void Do()
    {
        base.Do();//选择性的是否调用。
        //....代码体
    }
}
抽象类:
1、在定义类的关键字 class 前面加 abstract 修饰,表示这个类为抽象类。子类继承抽象类后,使用 override 关键字重写父类中的所有抽象方法。
2、抽象类中不一定有抽象方法,但是抽象方法必须存在于抽象类中。抽象方法也需要用 abstract 关键字进行修饰。
3、抽象方法没有方法体,且抽象方法必须在子类中实现。
4、抽象类不能被实例化,但是可以有构造函数。因为抽象类中有抽象方法(无方法体),如果实例化抽象类,那么抽象类的对象调用这些无方法体的抽象方法是没有任何意义的,所以无法实例化。
抽象类以及抽象方法语法格式如下:
public abstract class Father//抽象类
{
    public abstract void Do();//抽象方法
}
public class Son : Father
{
    public override void Do()
    {
        //...
    }
}
接口:当抽象类中的所有方法都是抽象方法时,可以用接口的形式来表现。
1、接口使用 interface 关键字定义,没有 class 关键字,接口名一般使用“IXxxx”。
2、接口中不能包含字段,但是可以包含属性(自动属性)。
3、接口中定义的方法不能有方法体,全是抽象方法,但又不需要用 abstract 关键字修饰,因此接口不能被实例化,且不能有构造函数。
4、接口中的成员不允许添加访问修饰符,默认都是 public。
5、一个类可以实现多个接口,被实现的接口之间用逗号分隔开;一个接口也可以继承多个接口,接口之间也要用逗号分隔;当一个接口实现一个接口时,如果这两个接口中有相同的方法时,可以用 new 关键字隐藏父接口中的方法。
6、继承者必须实现接口中的所有方法。
接口语法格式如下:
interface IFather
{
    void Do();
}

interface IMother:IFather
{
    new void Do();//隐藏父接口的同名方法
    void Do1();
}

public class Son : IFather,IMother
{
    public void Do()
    {
       //......
    }

    public void Do1()
    {
        //.....
    }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

182

主题

2120

帖子

4842

积分

论坛元老

Rank: 8Rank: 8

积分
4842
沙发
 楼主| 发表于 2020-4-29 17:50:30 | 只看该作者
回复

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
板凳
发表于 2020-4-30 16:55:13 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-27 11:03 , Processed in 0.131553 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表