C#基础学习(一)抽象,继承,类与访问修饰符

3 篇文章 0 订阅
3 篇文章 0 订阅

数据访问修饰符
private :访问限于包含类型,是私有访问。只限于本类成员访问,子类,实例都不能访问 ,可以通过成员方法进行访问。
protected:访问限于包含类或派生出的子类。
internal:只限于本项目内访问,即同一程序集访问,其他不能访问。在同一命名空间可以访问。
public :访问无限制。
protected internal:只限于本项目或是子类访问,其他不能访问。
private protected: 访问限于包含类型或子类访问


类的定义是以关键字 class 开始,后跟类的名称。类的主体,包含在一对花括号内
类通俗来说是:对象由什么组成及在这个对象上可执行什么操作。
对象是类的实例。
类的默认访问标识符是 internal,所有成员的默认访问标识符是 private
类的成员函数
类的成员函数是一个在类定义中有它的定义或原型的函数,就像其他变量一样,作为类的一个成员,它能在类的任何对象上操作,且能访问该对象的类的所有成员。
类的构造函数
构造函数的名称与类的名称完全相同,它没有任何返回类型。
默认的构造函数没有任何参数。但是如果你需要一个带有参数的构造函数可以有参数,这种构造函数叫做参数化构造函数。这种技术可以帮助你在创建对象的同时给对象赋初始值。
析构函数
类的 析构函数 是类的一个特殊的成员函数,当类的对象超出范围时执行。
析构函数的名称是在类的名称前加上一个波浪形(~)作为前缀,它不返回值,也不带任何参数。
析构函数用于在结束程序(比如关闭文件、释放内存等)之前释放资源。析构函数不能继承或重载。
抽象类
由abstract修饰,抽象类没有指出行为的具体细节,而由他的子类去实现相应的行为。
派生类必须提供所继承的抽象类的实现
抽象类可以被继承但不能实例化
子类可以是抽象类或非抽象类
非抽象类不能有抽象方法,抽象方法一定要被子类重写,由override提供,而其他方法没要求。
抽象类中可以有非抽象属性和非抽象方法,也可以是私有或者公有,但是如果是私有的话子类就不能访问,无意义,所以一般情况下都设置为公有。
接口
当使用类的时候,仅关注其行为,不关心继承时可以使用接口来代替类
接口的意义就是公共行为的载体,所以他的成员都是隐式公有的,不能加上修饰符
抽象类和接口的区别:

1、抽象类中可以有实现成员(非抽象方法),而接口中的方法只有声明没有实现;
2、抽象类中可以有字段,接口中不能有字段,但可以有属性;
3、抽象类的成员可以使用公有或其他修饰符,接口中成员是隐式公有的,不需要修饰;
4、抽象类是概念的抽象,接口注重行为,抽象类不支持多重继承,而一个类可以实现多个接口。

类的继承
继承实现的是IS—A的关系,使得新定义的派生类的实例可以继承已有的基类的特征并且还可以添加新的功能
(1) 派生类是对基类的扩展,派生类可以添加新的成员,但不能移除已经继承的成员的定义。
(2)继承是可以传递的。如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中声明的成员。
(3)构造函数和析构函数不能被继承,除此之外其他成员能被继承。基类中成员的访问方式只能决定派生类能否访问它们。
(4)派生类如果定义了与继承而来的成员同名的新成员,那么就可以覆盖已继承的成员,但这兵不是删除了这些成员,只是不能再访问这些成员。
(5)类可以定义虚方法、虚属性及虚索引指示器,它的派生类能够重载这些成员,从而使类可以展示出多态性。
(6)派生类只能从一个类中继承,可以通过接口来实现多重继承。
(7)一个类可以用父类声明,但必须用子类实例化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值