首页 > 编程语言 >C#面向对象的三大特征

C#面向对象的三大特征

时间:2023-08-18 21:37:55浏览次数:56  
标签:访问 C# 子类 多态 --- 面向对象 重载 重写 三大

一、封装

封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的类或者对象隐藏信息。简单地说,一个类就是一个封装了数据及操作这些数据的代码的逻辑实体。目的是增强程序的安全性、简化编程、代码的重用性更高,让修改或扩展更方便。

访问修饰符:

public:访问不受限制。

protected:访问仅限于包含类或从包含类派生的类型。只有包含该成员的类以及继承的类可以存取.

Internal:访问仅限于当前程序集。只有当前工程可以存取.

protected internal:访问仅限于当前程序集或从包含类派生的类型。

private:访问仅限于包含类型。只有包含该成员的类可以存取.

 

二、继承

子类继承父类:子类拥有父类非私有的方法和属性

继承的优点为了代码的重用。
子类在继承父类的构造方法时会先调用祖先的构造的方法依次到本类为止。

屏幕截图 2023-08-18 210555

 

三、多态:
多态就是重载(行为多态)和重写(对象多态)
重载:在同一个类中,方法名相同,方法的参数数据类型顺序有一个不同
重写:子类重新定义父类方法。

下面是更多的区别:

定义不同---重载是定义相同的方法名,参数不同;重写是子类重写父类的方法

范围不同---重载是在一个类中,重写是子类与父类之间的

多态不同---重载是编译时的多态性,重写是运行时的多态性

返回不同---重载对返回类型没有要求,而重写要求返回类型,有兼容的返回类型

参数不同---重载的参数个数、参数类型、参数顺序可以不同,而重写父子方法参数必须相同

修饰不同---重载对访问修饰没有特殊要求,重写访问修饰符的限制一定要大于被重写方法的访问修饰符

标签:访问,C#,子类,多态,---,面向对象,重载,重写,三大
From: https://www.cnblogs.com/zsanyue/p/17641637.html

相关文章

  • C++11新特性——1.4-1.5 final和override
    1.4final原文:https://subingwen.cn/cpp/final/总结:1.final限制某个类不能被继承,或限制某个虚函数不能被重写2.final修饰虚函数或者类3.final关键字写到虚函数或类后面classBase{public:virtualvoidtest(){cout<<"Baseclass.........
  • CDQ分治
    如果现在有一些操作,有些操作会产生贡献,同时里面的情况会依次发生更改,要求我们去维护发生更改后的总贡献。这个问题会使得我们初感很棘手,主要原因在于这是一个动态的问题,当其中一个操作发生变化后会对很多的操作产生影响,导致寻常的数据结构难以维护。而现在引入的CDQ分治可以将一......
  • c++ 常用的 STL
    c++中常用的STLvector//vector变长数组倍增的思想(倍增:系统为每一个程序分配空间的时候,所需要的时间和空间大小无关,与请求次数相关)尽量减少请求的次数/*返回元素的个数size()判断是否为空empty()清空clear()front()返回第一个数back()返回最后一个数push......
  • python调用java的jar包,在scrapy中处理加密逻辑
    APP采集过程中有些请求是需要加密处理的,之前的方式是通过frida-inject的方式处理的,但是这需要连接手机,好在本次处理的APP加密逻辑不是很复杂,加密逻辑都在java层,于是便将里面的java层的加密逻辑单独摘出来,想单独的做成一个jar包,这样就不用再用python做一个相同的算法还原了经过半......
  • 面向对象开发的封装
    封装被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使程序员实现所需级别的抽象。封装使用 访问修饰符 来实现。一个 访问......
  • wsl2 下输出重定向至 clip.exe 出现中文乱码问题解决方案
    背景win10系统在wls2下安装neovim后希望与windows剪切板通信。按教程添加如下配置。--系统剪切板ifvim.fn.has('wsl')then vim.g.clipboard={ name='WslClipboard', copy={ ['+']='clip.exe', ['*']='clip.exe'......
  • 【vscode】markdown preview mermaid 不显示
    需要安装插件markdownpreviewmermaidsupport插件,注意如果使用服务器,服务器也需要安装。远程服务安装插件可能速度较慢,我们可以下载vsix直接安装。通过vscodeplugins,搜索需要的插件,在version中选择合适的版本,下载并上传到远程服务器,最后通过vscode安装......
  • nacos安装
    一、安装mysql1.docker安装mysql:5.7pass2.创建网络dockercreatenetworknacos_network3.下载sql(官网提供)#下载数据库文件https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql注意:这里依旧官网提供的,创建库和表,注册用户......
  • JavaScript中的析构对象,析构数组与展开运算符
    前言这些是JavaScript中重要的编程思想,这些析构对象,析构函数与展开运算符很重要这块内容不怎么难,纯属一些语法,但是在所谓的函数式编程,以及React中却是广泛使用的逆向思维,之前是怎么构造,而现在让你如何展开,获取里面的内容!!逆向思维,之前是怎么构造,而现在让你如何展开,获取里面的内......
  • CC3
    参考链接https://www.bilibili.com/video/BV1Zf4y1F74K环境搭建和jdk貌似关系不大,用之前的8u65或者8u71都可以cc用的3.2.1利用链分析寻找链子的过程:ClassLoader.defineClass()->TemplatesImpl#defineClass()->TemplatesImpl#defineTransletClasses()->TemplatesImpl#getTr......