C# 类类型

摘要:
继承:不支持多重继承,但可以实现许多独立的接口sealed关键字防止派生,一个类被声明为sealed时不可派生base关键字访问父类中的public和protected成员包含/委托模型,即将一个类对象封装在另一个类里,   在另一个类里定义方法访问这个类对象所能访问的成员。
1、一旦定义了自定义构造函数,默认的构造函数就会被移除
2、可以使用this设计构造函数链,将核心部分代码由主构造函数完成,其余的构造函数调用主构造函数就可以了
3、静态构造函数适合初始化静态数据成员(这个初始化发生在编译时)
4、防止创建类对象的方式:
  • 定义静态类
  • 将构造函数声明为私有的(private
  • 将类声明为抽象的(abstract
5、OOP支柱
封装:
  • 支持类型属性(可添加访问控制符),用来get和set数据成员(这里的get和set在内部也是方法,
    所以其前面也可以添加访问控制符),也可以只写get或者set。
  • 对于静态数据成员,可以有静态的类型属性来get和set(当然也可以用非静态属性)。
    静态数据的初始化最好在静态构造函数中进行。  
  • 常量(const)必须在声明时被初始化。
  • 只读(readonly)数据成员可以在构造函数里初始化,但是不能在对象构造完后初始化。 
  • 静态只读(staticreadonly)数据成员可以在声明时初始化,也可以在静态构造函数里初始化,
    也可以在非静态构造函数里初始化(不建议,效率很低)。
  • 支持partial关键字,表明类可以写在多个文件中。
继承:
  • 不支持多重继承,但可以实现许多独立的接口
  • sealed关键字防止派生,一个类被声明为sealed时不可派生
  • base关键字访问父类中的public和protected成员
  • 包含/委托模型,即将一个类对象封装在另一个类里,
    在另一个类里定义方法访问这个类对象所能访问的成员。同时也可以定义属性来公开这个类对象 
  • 嵌套类:通常内部类是为包含类做辅助的,一般为private,但是外部类不能声明为private。
    内部类可以访问外部类的私有成员
多态:
  • virtual关键字使基类的方法可以被子类重写(override
  • override关键字使子类重写基类virtual方法的实现
  • 当虚方法被声明为sealed时(例如:publicoverridesealed Show()),
    这个虚方法不能再被它的直接子类重写         
  • 抽象类一般定义抽象方法作为接口,使子类必须重写此抽象方法。从而实现多态。  
  • 投影的概念:当子类和父类具有同样的方法时(子类不override父类的方法),
    子类可以为此方法添加new关键字从而隐藏父类的相同方法。如果想调用父类的相同方法时,
可以强制转化子类为父类,这样就可以使用了。
  • as关键字:用来判断两个对象是否相容(也就是说可以把子类看成父类,不能把父类看成子类)
  • is关键字:判断某个对象是哪个子类
6、访问修饰符
private:只能类内部成员方法使用,外部定义的对象不可访问
protected:只有该类和其派生类的内部成员方法可以使用,外部定义的对象不可访问
public:(不说了)
注:C#语言默认的访问控制符是private

免责声明:文章转载自《C# 类类型》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# 求链表 list 中 属性的 最大值 最小值一篇文章带你了解SVG 蒙版(Mask)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C++ 常见崩溃问题分析

一、前言 从事自动化测试平台开发的编程实践中,遭遇了几个程序崩溃问题,解决它们颇费了不少心思,解决过程中的曲折和彻夜的辗转反侧却历历在目,一直寻思写点东西,为这段难忘的经历留点纪念,总结惨痛的教训带来的经验,以期通过自己的经历为他人和自己带来福祉:写出更高质量的程序; 由于 C 和 C++ 这两种语言血缘非常近,文本亦对 C 编程语言有借鉴作用; 二、C+...

java.security KeyPairGenerator

KeyPairGenerator 类用于生成公钥和私钥对。密钥对生成器是使用 getInstance 工厂方法(返回一个给定类的实例的静态方法)构造的。 特定算法的密钥对生成器可以创建能够与此算法一起使用的公钥/私钥对。它还可以将特定于算法的参数与每个生成的密钥关联。 有两种生成密钥对的方式:与算法无关的方式和特定于算法的方式。两种方式的唯一区别在于对象的...

【OC学习-12】什么是类的继承?为什么要继承?以及继承里面的注意事项

(1)怎样实现类的继承? //之前的继承根类,如类ASStudent继承自根类 @interface ASStudent:NSObject{ } @end //如今继承现有自己定义的类,如ASStudent继承自Student @interface ASStudent:Student{ } @end (2)为什么要学习继承?理由就是少些代码。某些东西能...

转:Linux 编译安装 Mysql5.7

http://broqiang.com/2017/04/18/Mysql-Install-5.7.18-Linux-Compile/ 原文 Linux 编译安装 Mysql5.7 Ubuntu 下快速安装直接 apt 方式即可, 一般的开发环境也足够了 个人比较喜欢新版本,一般有新版本就会尝试一下 此文档适用于 Ubuntu 16.10 和 CentOS...

mui 注意事项

1>一切内容都要包裹在mui-content中 顶部导航栏(.mui-bar-nav)、底部工具条(.mui-bar-footer)、底部选项卡(.mui-bar-tab)放在.mui-content之前,否则固定栏会遮住部分主内容; 2>始终为button按钮添加type属性 若button按钮没有type属性,浏览器默认按照type=sub...

YYModel底层解析- Runtime

这段时间一直在忙新的需求,没有时间来整理代码,发表自己技术博客,今天我们来看一下YYModel的底层解析以及如何使用,希望对大家有所帮助! 一 概述 概括 YYModel是一个轻量级的JSON模型转换库,它的思路非常清晰代码风格也很好,所以还是建议大家看一下底层实现的逻辑,也可以从源码加深对Runtime的理解。 简介 下面是YYModel第三方库的一些代...