20120827
发布日期:2022-03-02 13:24:02 浏览次数:31 分类:技术文章

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

关于类的声明

class MyClass{}Internal class MyClass {}

 

   Internal为类声明的默认修饰符,声明为内部类表示只有当前项目中的代码才能访问它。可以用Internal进行显示声明,但是没有必要。

相对于Internal,Public修饰符表示可以有其他项目的代码来访问。(“二级”修饰符abstract和sealed为抽象类和最终类修饰。)

 类的继承

C#中只能有一个基类,不允许派生类的可访问性比基类高。

继承:

class DrivedClass : BaseClass {    ... ... }

接口:

class Class : Interface{    ... ...}

派生且接口:

class DrivedClass : BassClass, Interface {    ... ...}

C# 中只能继承一个基类,但是可以连接多个接口:

class DrivedClass : BassClass, Interface1, Interface2 ,…,Interfacen{    ... ...}

注意:所有接口成员必须在实现类中实现,如果不想进行实现可以提供一个空的函数执行体。

接口:

声明与类类似,关键词为Interface,接口中不包含实现代码,而且能够被继承,在接口中abstract与sealed无意义,不能使用。

接口与抽象类的区别:

相同点:1)都包含由派生类继承的成员;

2)不能直接实例化、可以声明其变量。通过变量控制访问的成员变量。

不同点:1)抽象类:可以拥有抽象成员(没代码体,且必须在派生类中实现否则派生类也是抽象的)和非抽象成员

接口:只能声明并由使用接口的类实现

2)抽象类: 成员可以公有和私有或其他性质。

接口: 接口成员都是共有,禁止定义类型成员,但是隐藏基接口可以用new隐藏函数。

3)接口不能包含字段、构造函数、析构函数、静态成员或常量。

接口的实现:

对于定义属性:声明set、get访问器,类似于类中的自动属性,但又不同。

可以使用virtual和abstract来执行接口成员,但是不能使用static和const。

接口成员的现实执行和隐式执行:

public void interface.fun();  //显示执行public void fun();   //隐私执行。

其执行为:

Class ob = new class();Ob.fun(); //隐私执行。Interface obIn = ob;obIn.fun(); //显示执行,此时Ob.fun();失败;

用非公共的可访问性添加属性访问器

public interface IMyInterface{    int MyIntProperty    {         get;    }}public class MyBaseClass : IMyInterface{    protected int myInt;        public int MyIntProperty    {         get         {            return myInt;         }         protected set         {            return myInt;         }    }}

部分类定义(实现功能分块或者声明实现):

1、#region 函数说明

     #endregion

2、partial class PartClassTest{} 利用partial关键词将不同的功能块在不同的文件中进行定义。

3、为了实现方法与实现的分离,可以利用partial进行函数分块。但是需要注意的是分部方法不能具有访问修饰符或 virtual、abstract、override、new、sealed 或 extern 修饰符

类成员:

成员:访问级别:添加internal 只能有项目内部的代码访问。

字段:(C++中成员变量)可以使用关键词readonly,表示只能在构造函数过程中赋值。相对于const较为灵活(const成员也是静态的)。

方法

定义的关键词:virtual、abstract、override、extern

自动属性:public int MyData

             {

                  get;

                  set;

              }

MyData进行数据交换的细节操作为系统自行完成,底层的私有字段也由编译器完成,不能访问,同事set\get 必须全部保留。

 

基类成员的隐藏和重写

class baseclass{     public void fun(){ }; }class driedclass : baseclass{     //隐式隐藏,屏蔽基基类成员,编译器编译时候会发出警告;    public void fun()   {        ... ...    };     //隐式隐藏;    new public void fun()    {        ... ...    };     //重写,实现多态性;    public override void fun(){    {        ... ...    }; }

转载于:https://www.cnblogs.com/Caius/archive/2012/08/31/2664847.html

转载地址:https://blog.csdn.net/anqingxun0615/article/details/101368133 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:20120824
下一篇:20120903 XAML

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月11日 16时45分29秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【面试题目】Java设计模式你有哪些了解?说几个常用的。 2019-04-26
【计算机操作系统】常说的死锁是什么?死锁产生的必要条件是什么?死锁的解决策略是什么? 2019-04-26
【计算机操作系统】进程管理详解?进程与线程区别是什么?进程调度的算法有哪些?进程通信有哪些? 2019-04-26
【计算机操作系统】虚拟内存是什么?分页系统地址映射?页面置换算法有哪些?分段地址映射又是什么? 2019-04-26
【计算机操作系统】设备管理?磁盘结构是怎么样的?磁盘调度算法有哪些? 2019-04-26
【多线程高并发】为什么要使用多线程?创建多少个线程合适呢? 2019-04-26
【多线程与高并发】 Java两个线程轮流打印1-100两个数?多线程轮流打印数字? 2019-04-26
【多线程与高并发】 Java两个线程轮流打印字符串? 2019-04-26
【Linux命令篇】Linux命令实践 2019-04-26
【Leetcode单调队列】Leetcode239 滑动窗口最大值 2019-04-26
【Leetcode-单调栈】单调栈相关的题目-下一个更大的元素I 每日温度 2019-04-26
【Leetcode单调队列】- 洛谷P1714切蛋糕 2019-04-26
【Leetcode优先级队列】- 数据流的中位数 2019-04-26
【Leetcode优先级队列】-合并K个升序链表 2019-04-26
【多线程与高并发】-Java如何实现一个阻塞队列呢? 2019-04-26
【多线程高并发】-Java使用阻塞队列ArrayBlockingQueue实现生产者消费者模式? 2019-04-26
【多线程高并发】-多线程实现数组的读与写 2019-04-26
【Java设计者模式】-Java实现订阅-发布者模式 2019-04-26
【计算机操作系统】-什么是系统调用呢?什么是用户态?什么是内核态? 2019-04-26
【计算机操作系统-进程管理】-进程通信是什么呢? 2019-04-26