刘铁猛C#入门 024 类的声明,继承和访问控制

devtools/2024/11/18 22:10:29/

类声明的全貌

C#声明类的位置

声明既定义(C#与Java)

  • 类的修饰符

最简单的类声明

类的访间控制 :默认internal

共性

  • public 和 internal 都是访问修饰符,用于定义一个类型的成员可以被谁访问。
  • 它们都可以用来声明类、结构、接口、枚举、字段、方法、属性或事件等

区别

  • public 声明的成员对所有其他代码都是可见的,无论这些代码是否位于同一个文件、同一个命名空间或者同一个程序集内。
  • internal,声明的成员仅对包含该成员的程序集内的代码可见。把成员的访问性限制在同一个项目(程序集)里面

类成员的访间控制

类的继承

  • 类在功能上的扩展
  • 只能有一个基类,但可以实现多个接口
  • 类访问级别对继承的影响 ,子类的访问级别不能超越父类
  • sealed类不能被继承,sealed修饰的类为封闭类
  • 是一个,语义上一个子类的实例也是其父类的实例,一个派生类的实例也是其基类的实例。

继承的本质:继承的本质是派生类在基类已有的成员的基础之上对基类进行横向或者纵向上的扩展

  • 横向扩展:类成员在数量上面的扩充
  • 纵向扩展:不增加类成员的个数,对某些类成员版本进行扩充 —— 重写

成员的继承与访问

  • 派生类对继承成员的访问
  • 派生类对基类成员的访问
    • internal 同一程序集
    • private类体内 成员访问默认private
    • protected亲族之间,多修饰在父类的方法中
      • protected internal 一起使用:表既可以被在成员所在的程序集访问 ,也可以被继承链中的类访问
  • 构造器的不可继承性

面对对象的实现风格

  • Class - based 基于类进行的封装和多态
  • Prototype - based 基于原型进行的封装和多态 、JavaScript

派生类对其类的成员获得与访问在派生类中访间基类的成员

构造器的不可继承性


http://www.ppmy.cn/devtools/135046.html

相关文章

Docker环境搭建Cloudreve网盘服务(附shell脚本一键搭建)

Docker搭建Cloudreve Cloudreve介绍: Cloudreve 是一个基于 ThinkPHP 框架构建的开源网盘系统,旨在帮助用户以较低的成本快速搭建起既能满足个人也能满足企业需求的网盘服务。Cloudreve 支持多种存储介质,包括但不限于本地存储、阿里云OSS、…

第8章 利用CSS制作导航菜单

8.1 水平顶部导航栏 水平莱单导航栏是网站设计中应用范围最广的导航设计,一般放置在页面的顶部。水平 导航适用性强,几乎所有类型的网站都可以使用,设计难度较低。 如果导航过于普通,无法容纳复杂的信息结构,就需要在…

Neo4j Desktop 和 Neo4j Community Edition 区别

Neo4j Desktop 和 Neo4j Community Edition 的主要区别在于它们的用途、功能以及安装和管理方式。以下是这两者的详细对比: 1. Neo4j Desktop Neo4j Desktop 是一个图形化的桌面应用程序,主要为开发人员和个人使用提供了一个便捷的环境来安装、管理和运…

Python 正则表达式使用指南

Python 正则表达式使用指南 正则表达式(Regular Expression, 简称 regex)是处理字符串和文本的强大工具。它使用特定的语法定义一组规则,通过这些规则可以对文本进行匹配、查找、替换等操作。Python 提供了 re 模块,使得正则表达…

vim教程

Vim是一款功能强大的文本编辑器,广泛应用于Linux系统。它不仅是一个编辑器,更是一个开发者必备的工具。下面将详细介绍Vim的基本操作、高级功能、插件管理和配置: Vim的安装 在Ubuntu/Debian上安装:sudo apt update sudo apt inst…

小程序-基于java+SpringBoot+Vue的驾校预约平台设计与实现

项目运行 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

前端传数组 数据库存Json : [1,2,3]格式

一、前端正常传数组,但是value.toString() 即可 const empIds ref([1,2,3]) empIds.value empIds.value.toString() await updateApiRules(empIds.value) // 接口传参 二、后端用String类型接收后转换 String[] empIds updateDO.getEmpId().split("&#x…

DB-GPT系列(五):DB-GPT六大基础应用场景part2

前面文章《DB-GPT系列(四):DB-GPT六大基础应用场景part1》讲了DB-GPT六大基础应用场景中的基础问答、知识库问答、Chat Excel功能,这篇文章继续介绍剩下的3个基础应用场景:Chat DB、Chat Data、Chat Dashboard。 一、…