• [毕业生的商业软件开发之路]C#类型样式


    近期开始接触到在校学生、高校实习生和毕业生,在此说一下笔者对这些徘徊在职场门口的学生一些建议,希望能给这些初学者进入软件开发行业带来一些帮助,使得毕业生能更顺利的进入软件开发公司开始职场生涯,人生来一个完美的转弯。

    ------------------------------------------------------------------------------------

    类型样式

    在定义类型的时候可以指定类型的一些特性,这些样式有
    static class 静态类
    被“static”修饰的类就是静态类型,静态类型其所有的成员都必须标记为静态的,否则会编译错误。静态类型一般用于容纳一些通用的例程,比如某些科学数值运算等。
    以下C#代码就定义了一个静态类型

    public static class MyStaticClass
    {
        public static int Sum(int a, int b)
        {
            return a + b;
        }
    }

    在代码“public static class MyStaticClass”中,“public”定义类型为公开的,“static”说明该类型是静态的,“class”说明正在定义一个类类型,“MyStaticClass”是类型名称。
    在这个类型中定义了一个静态方法Sum,在静态类型中不能定义非静态的成员。由于类型的构造函数也是静态的,因此静态类型不能实例化。
    关于静态方法可参考下节。
     
    被“abstract”修饰的类就是抽象类,抽象类是一种介于类和接口之间的类型,定义为抽象类说明其有部分内容尚未实现,有待以后被继承被扩展。以下代码就定义了一个抽象类

    public abstract class MyAbstractClass
    {
        public abstract int Sum(int a, int b);
     
        public int Div(int a, int b)
        {
            return a / b;
        }
    }

    在代码“public abstract class MyAbstractClass”中,关键字“abstract”就声明了该类型为抽象类;在代码“public abstract int Sum(int a, int b);”中,关键字“abstract”就声明该成员为抽象成员,抽象成员只能留个定义,不能有任何功能实现代码,因此在这里声明一下Sum方法就用分号结束了定义。
    抽象类可以包含不抽象的方法,比如此处包含了一个完整的Div成员方法。。
    抽象类不能实例化,对于类型“我的抽象类”,代码“MyAbstractClass instance = new MyAbstractClass( )”是错误的,抽象类必须派生出其他类型才能使用;而且派生的时候,所有的抽象成员必须强制被重写。由于抽象类必须被重载,因此抽象类不能是密封类,也就是说关键字“abstract”和“sealed”是相互排斥的。
    以下代码就从抽象类“MyAbstractClass”派生新的类型

    public class MyClassFromMyAbstractClass : MyAbstractClass
    {
        public override int Sum(int a, int b)
        {
            return a + b;
        }
    }

     
    由于从抽象类派生新类型时,开发人员可能忘记抽象类中定义的抽象成员,此时VS.NET的C#代码编辑器提供帮助功能,这个和帮助生成实现接口的功能类型,如下图所示
     
    当文本光标移动到方框处的“MyAbstractClass”,则左下角出现一个智能标签,鼠标点击这个智能标签会弹出一个菜单,点击菜单项目“实现抽象类“MyAbstractClass””就会自动生成以下代码。[袁永福版权所有]

    public class MyClassFromMyAbstractClass : MyAbstractClass
    {
        public override int Sum(int a, int b)
        {
            throw new NotImplementedException();
        }
    }

    这个时候开发人员就可以往重载的成员中添加功能代码了。
    由于抽象类型不能实例化,因此必须借助它的派生类型才能使用,比如以下的代码

    MyAbstractClass instance = new MyClassFromMyAbstractClass();
    instance.Div(1, 2);
    instance.Sum(3, 4);

    当然派生类型可以独立使用,如以下代码

    MyClassFromMyAbstractClass instance2 = new MyClassFromMyAbstractClass();
    instance2.Div(1, 2);
    instance2.Sum(3, 4);

    sealed class 密封类
    被关键字“sealed”修饰的类是密封类,密封类可以继承自其它类,但不能被继承,不能包含虚方法和抽象方法。以下代码就定义了一个密封类

    public sealed class MySealedClass
    {
        public int Sum(int a, int b)
        {
            return a + b;
        }
    }

    由于密封类不能被继承,不能被扩展,这可能会影响系统的扩展性,因此慎用,在实际中用得比较少。[袁永福版权所有]
  • 相关阅读:
    NYOJ228 士兵杀敌(五)
    NYOJ236 彩色棒 字典树 + 并查集 + 欧拉路
    给大家推荐一个用电脑拨打普通电话的软件skype
    转:甲骨文将以74亿美元收购太阳微系统公司
    花生壳原理求解
    利用IHttpModule及Session_End事件进行在线会员统计遇到的问题
    我的开发环境介绍及一个 Expression Bland 画图形的例子
    WF (Windows Workflow Foundation) 工作流学习(二)一个Asp.Net 与 顺序工作流 结合的例子
    WPF 、WinFrom 调用顺序工作流的登陆窗口例子
    Expression Bland 入门视频(三) 菜单、项目面板及工作区介绍
  • 原文地址:https://www.cnblogs.com/xdesigner/p/2124572.html
Copyright © 2020-2023  润新知