c# 对象 类

类定义中可以使用的访问修饰符组合
  • none or internal 类只能在当前工程中访问
  • public 类可以在任何地方访问
  • abstract or internal abstract 类只能在当前工程中访问,不能实例化,只能继承
  • public abstract 类可以在任何地方访问,不能实例化,只能继承
  • sealed or internal sealed 类只能在当前工程中访问,不能派生,只能实例化
  • public sealed 类可以在任何地方访问,不能派生,只能实例化
构造函数
其名称同类名,没有返回值,也不需要void ,在new的时候调用。
所有的类都有构造函数,只不过C#会默认一个无参数的构造函数,如果不定义,则使用默认。
如果定义了构造函数,则默认失效。
嵌套类
C#允许使用类嵌套
嵌套类型被视为是外层类型的成员,因此嵌套类型可以访问外层类型中的所有其他成员。
根据类的成员默认访问修饰符为:private的原则,嵌套类默认访问修饰符为private
嵌套类型可以自由访问外层类型的成员,而不在乎那些成员是否私有。外层类型如果想访问嵌套类型,则要受到访问规则的限制。
关于嵌套类的继承(后面会详细说明继承),如果一个类型继承了一个包含嵌套类型的类型,那么它也会自然的继承基类型中的嵌套类型,因为那个嵌套类型本身就是基类型的一个成员。因此只要那个嵌套类型不是private或者天生不能被继承的,子类型中新声明的嵌套类型还可以继承那个嵌套类型。
析构函数
  • 不能在结构中定义析构函数。 只能对类使用析构函数。
  • 一个类只能有一个析构函数。
  • 无法继承或重载析构函数。
  • 无法调用析构函数。 它们是被自动调用的。
  • 析构函数既没有修饰符,也没有参数。
一. 析构函数的特征:
析构函数只能存在于类中,而不能存在于结构中;析构函数不能有任何修饰符,包括访问控制修饰符,静态修饰符,抽象修饰符,虚拟修饰符等都不能有;析构函数没有参数,这就意味着不能有任何重载。
二. 析构函数的调用时机:
析构函数会在对象被垃圾收集器回收时调用,但垃圾收集器有个特点,它是懒惰的, 它并不会在变量出了作用域和生命期后立即回收,而是在它认为适当的时候才回收,一般是内存紧张的时候。
例子:
class Car { ~Car() // destructor { // cleanup statements... } }
对象的消亡
对象超出作用范围 消亡
对象 引用手动赋值 null 消亡
类的继承
继承是面向对象编程的一个重要特性。任何类都可以从另一个类中继承,这就是说,这个类拥有它继承的类的所有成员。在OOP 中,被继承的类称为父类(也称为基类)。注意,C#中的对象仅能直接派生于一个基类,当然基类也可以有自己的基类。
类的继承一个重要作用是子类可重用父类的代码。这样就可以在一个地方集中维护一份代码,避免了很多的重复的代码。
c#只支持单继承
继承语法 :
class ModelACar : Car
重构
比如现在我有两个类,一个是Cat,另一个是Dog,他们都有叫方法,如果我每个类都去写实现叫方法,就造成了代码的重复,怎么办那,可以把叫方法抽象出来,放到一个父类Animal中,让子类Cat、Dog去继承
【重写】
多出现在多态里,父类里写一个virtual方法或abstract方法,子类通过override重写去实现父类的方法
  • 1.重写父类的方法要用到override关键字(具有override关键字修饰的方法是对父类中同名方法的新实现)
  •      2.要重写父类的方法,前提是父类中该要被重写的方法必须声明为virtual或者是abstract类型。给父类中要被重写的方法添加virtual关键字表示可以在子类中重写它的实现。(注意:C#中的方法默认并不是 virtual类型的,因此要添加virtual关键字才能够被重写)
  • 3.virtual关键字用于将方法定义为支持多态,有virtual关键字修饰的方法称为“虚拟方法”
class Animal {
public virtual void GetShoutSound() { }
}
class Cat:Animal {
public override void GetShoutSound() {
Console.WriteLine("猫的叫声为:喵");
}
}
class Dog : Animal {
public override void GetShoutSound() {
Console.WriteLine("狗的叫声为:");
}
}

  

转载于:https://www.cnblogs.com/gwyy/p/8028879.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openshift用户管理_OpenShift Express Web管理控制台:入门

openshift用户管理本周, 最新版本的OpenShift为已经很棒的PaaS Cloud提供商带来了两个非常好的功能。 首先,JBoss AS已从7.0升级到7.1,并且所有新的Express Web Management Console已作为预览发布。 在本文中,我们将研究如何使用此…

linux系统搭建ftp服务器--只给某个用户访问其默认目录下的文件

1、环境: window操作系统中安装FlashFXP 软件或xftp; 服务器端的操作系统为centos8; 2、检查安装vsftpd软件 查看所有的安装的软件包 并在结果中查找包含vsftp 的文件 rpm -qa | grep vsftpd如果没有装则使用yum命令安装 yum -y install vsftpd3、创…

12月13日 什么是help_method,session的简单理解, find_by等finder method

helper_methodDeclare a controller method as a helper. For example, helper_method :link_todef link_to(name, options) … end makes the link_to controller method available in the view.课程遇到的如current_cart,current_user. 声明后,就可以在view里面使…

Openshift源中的高可用性Drools无状态服务

嗨,大家好! 在这篇博客文章中,我想举一个简单的例子,展示使用Openshift 3(Docker和Kubernetes)扩展Drools Stateless服务有多么容易。 我将展示如何通过按需提供新实例来扩展我们的服务,以及如何…

FTP配置文件详解vsftpd.conf

FTP配置文件详解vsftpd.conf 转载过来做个笔记,原文地址:https://blog.csdn.net/miss520jenny/article/details/92664533 #vi /etc/vsftpd/vsftpd.conf 1.登录和对匿名用户的设置 write_enableYES //是否对登录用户开启写权限。属全局性设…

Visual C++中MFC消息的分类

Visual C中MFC消息的分为三类:标准(窗口)消息、命令消息、控件消息。 1、标准(窗口)消息:窗口消息一般与窗口内部运作有关,如创建窗口,绘制窗口,销毁窗口,通常,消息是从系统发到窗口&#xff0c…

为什么配置了vsftpd.conf文件,用户还是可以访问上级目录?

因为选择的连接类型是 SFTP over SSH 所以访问的是 sftp服务器,sftp的配置文件中没对该用户限制根目录,所以可以访问上一级目录。但是,还是不可以写入了,除了该用户的目录文件,其他文件都是只读。 修改 /etc/ssh/sshd…

来呀,快活呀。iOS 超级码农群:538549344

特大喜讯: iOS开发的小伙伴们,咱们有群了 iOS 超级码农交流群: 538549344 建群源于最近好多人加我QQ交流技术问题,有时忙于工作无法及时回复,为了大家的问题能及时得到解答,还是建个群,群里很多…

jpa jsf_完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第1部分

jpa jsf我们创建了这篇文章,将展示如何使用以下工具创建完整的Web应用程序:Tomcat7,带有Primefaces的JSF2(Facelets和Libraries)(具有AutoComplete),JPA / Hibernate(具有…

前端性能优化:Add Expires headers

合理设置 HTTP缓存 缓存的力量是强大的,恰当的缓存设置可以大大的减少 HTTP请求。 很少变化的图片资源可以直接通过 HTTP Header中的Expires设置一个很长的过期头 ;变化不频繁而又可能会变的资源可以使用 Last-Modifed来做请求验证。 (1)Apa…

错题

1. 本题考查String对象的声明和赋值方式。C#中没有new String() 这种方式来构造字符串。故选 AC 2. 在CSS中,控制列表样式的属性有:list-style-type,list-style-position,list-style-image,list-style equals比较的是像…

通过微调JVM Garbage Collector减少Java IDE滞后

有没有想过为什么Eclipse / Netbeans会一直暂停一段时间? 特别是在您想向亲爱的同事展示代码中的内容时? 感觉很尴尬和尴尬,不是吗? 我发现大多数时间由于垃圾收集器的执行而导致IDE暂停。 JVM设计中的微妙元素很少起作用&#x…

centos8部署nginx

Nginx 部署 1.创建 www用户, UID、GID 皆是 501,通过cat /etc/passwd,检查是否存在www用户 ~]# groupadd -g 501 www ~]# useradd -u 501 -g www www ~]# cat /etc/passwd 2.下载相应版本 ~]# wget http://nginx.org/download/nginx-1.16…

javascript-发布订阅模式

说明:本篇文章转载自小火柴的蓝色理想的一篇博文。原文地址:http://www.cnblogs.com/xiaohuochai/p/8031564.html 发布—订阅模式又叫观察者模式,它定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖…

centos8部署Django项目---后台运行

参考:https://www.cnblogs.com/yoyoketang/p/10220941.html 一、安装 pip install django创建项目 django-admin startproject mysite打开项目配置settings.py文件 cd mysite/mysitesettings.py文件( DEBUG TrueALLOWED_HOSTS [127.0.0.1, localh…

python-列表list和元组tuple

list Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。 比如,列出班里所有同学的名字,就可以用一个list表示: >>> classmates [Michael, Bob, Tracy] >>&g…

jsf表单验证_动态表单,JSF世界期待已久

jsf表单验证新的PrimeFaces扩展版本0.5.0带来了新的DynaForm组件。 通常,如果知道行/列的数量,元素的位置等,则可以通过h:panelGrid或p:panelGrid构建非常简单的表单。 静态表单是正确的。 但是,如果在运行…

转载黑客是如何黑到你手机的?绝对涨姿势,一位黑客的Wi-Fi入侵实录!

声明:这是一虚构的故事,因此对图片均进行了模糊化处理。内容整理自网络! 故事的主人公小黑是一名从事IT相关工作的技术宅男。五一长假来临,宅在家中的他相当无聊,打开手机上的Wi-Fi模块,发现附近有将近10个…

linux安装pip

使用脚本安装和升级pip 要安装或升级pip,需要下载 get-pip.py. 地址:https://bootstrap.pypa.io/get-pip.py 然后运行以下命令 (需要管理员权限): $ wget https://bootstrap.pypa.io/get-pip.py $ python get-pip.py #查看pip版本 $ pip -V

我们如何意外地将Hibernate的JDBC流量增加了一倍

这篇文章描述了我最近使用Hibernate ORM的经验。 多年以来,该框架并没有让我感到惊讶,您可能会在使用它时遇到性能问题。 我以为我已经看完了,但是这次我又措手不及了。 该问题的基础是在对一个完全不相关的库进行故障排除时建立的&#xff…