博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#类和成员定义
阅读量:5166 次
发布时间:2019-06-13

本文共 1648 字,大约阅读时间需要 5 分钟。

    C#用关键字class来定义类。默认情况下,类声明为内部(internal)的,即只有当前项目中的代码才能访问它。与之相对应的,还可以用public关键字来修饰,这样该类还可以由其他项目中的代码来访问。

    以这种方式声明的类不能是私有或者受保护的,但是可以把这些修饰符用于修饰类成员。编译器不允许派生类的可访问性高于基类。也就是说,内部类可以继承于一个公共基类,但是公共类不能派生于内部类。

    除此之外,还可以指定两个关键字abstract和sealed来修饰。abstract指定抽象类(不能实例化,只能继承,可以有抽象成员)。sealed用来指定密封类(不能继承)。abstract与sealed两个关键字是互斥的。

    C#中类定义的语法可以写作:

1: [internal | public] [abstract | sealed] class 
<类名>
: [
<基类>
,] [
<接口1>
,
<接口2>
…]
2: {
3:     //类定义
4: }

    小结:

 

关键字

性 质

可访问性

public

可以由其他项目中的代码来访问

 

internal

只有当前项目中的代码才能访问

可继承性

abstract

不能实例化,只能继承,可以有抽象成员

 

sealed

不能继承,子类中无法修改

 

    需要注意的是C#与C++不同,所有继承都是公共继承,不支持私有继承!如果类定义时没有指定基类,默认吧System.Object作为基类。

2 定义类成员

2.1 成员定义

    类成员中包括字段、属性和方法。访问级别包括public(成员可以由任何代码访问)、private(成员只能由类中代码访问,默认使用private)、internal(只能由项目内代码访问)、protected(只能由类或派生类的代码访问)。后两个关键字可以合并使用,所以也有protected internal成员。他们只能由定义的类和项目中的派生类的代码来访问。

也可以使用static关键字来声明字段、属性和方法,表明它们是静态成员,而不是对象实例的成员。

2.2 字段定义

    修饰符:public、private、internal、protected、static、readonly。其中readonly修饰的字段只能在声明阶段或者构造函数阶段可以进行赋值。

2.3 定义方法

    方法可以用下列关键字来修饰:

    static——只能通过类名来访问。

    virtual——方法可以重写。

    abstract——方法必须在非抽象的派生类中重写。

    override——重写一个基类方法时必须使用该关键字。如果使用了override,还可以配合使用sealed指定在派生类中该方法不能被重写。

                    例:public override sealed void DoSomething()。

    extern——方法定义放在其他地方。

2.4 定义属性

    可将属性标记为 public、private、protected、internal或protected internal。这些访问修饰符定义类的用户如何才能访问属性。属性还可以使用virtual、override和abstract关键字,就像方法一样。

    C#的属性拥有两个类似于函数的块,称为访问器。同一属性的get和set访问器可能具有不同的访问修饰符。例如,get可能是public以允许来自类型外的只读访问;set 可能是 private 或 protected。访问器可以使用的访问修饰符取决于属性的可访问性,访问器的可访问性不能高于它所属的属性,也就是说,私有属性的访问器不能包含任何可访问修饰符,而公共属性可以对其访问器使用所有可访问修饰符。

转载于:https://www.cnblogs.com/NO-30/p/3461337.html

你可能感兴趣的文章
建立,查询二叉树 hdu 5444
查看>>
[Spring框架]Spring 事务管理基础入门总结.
查看>>
2017.3.24上午
查看>>
Python-常用模块及简单的案列
查看>>
LeetCode 159. Longest Substring with At Most Two Distinct Characters
查看>>
基本算法概论
查看>>
jquery动态移除/增加onclick属性详解
查看>>
JavaScript---Promise
查看>>
暖暖的感动
查看>>
Java中的日期和时间
查看>>
Django基于admin的stark组件创建(一)
查看>>
抛弃IIS,利用FastCGI让Asp.net与Nginx在一起
查看>>
C. Tanya and Toys_模拟
查看>>
springboot jar包运行中获取资源文件
查看>>
基于FPGA实现的高速串行交换模块实现方法研究
查看>>
Java Scala获取所有注解的类信息
查看>>
delphi ,安装插件
查看>>
case when then的用法-leetcode交换工资
查看>>
11.28.cookie
查看>>
BeanShell简介
查看>>