C#基础之类的详解

        类是自定义数据类型的蓝图,对现实生活中一类具有共同特征的事物的抽象。它是面向对象中的概念,是面向对象编程的基础。

        类是一种数据结构,包含了数据成员(字段、常量)和函数成员(方法、属性、索引器、事件、运算符、构造函数、析构函数和静态构造函数)。类的类型是支持继承。

1、类的声明

        class是声明类的关键字,其格式为[访问修饰符] class 类名称 [: 父类名] { [访问修饰符] 数据成员或函数成员 }。关于访问修饰符可以阅读前面文章[访问修饰符]。下面通过一段代码了解其定义:

public class PrintImage
{
#region  数据成员/// <summary>/// 打印机名称/// </summary>private string _Printername= string.Empty;;/// <summary>/// 图片/// </summary>public Image ImageDocument { get; set; }
#endregion#region  函数成员/// <summary>/// 构造函数/// </summary>public PrintImage(){// 方法体内容}/// <summary>/// 析构函数/// </summary>~ PrintImage() { // 方法体内容    }        /// <summary/// 打印方法/// </summary> public Print(string printername,Image image){// 方法体内容}/// <summary/// 预览方法/// </summary> public Preview(Image image){// 方法体内容}/// <summary>/// 泛型方法/// </summary>/// <typeparam name="T"></typeparam>/// <param name="parameter"></param>public static void Show<T>(T parameter){// 方法体内容}
#endregion
}
2、构造函数

构造函数是一个与类共享相同名称的方法,每个类只有一个。通常设置在类中定义的变量的初始值。

构造函数类型有默认构造函数、参数化构造函数、复制构造函数、静态构造函数和私有构造函数。默认构造函数没有任何参数。

using System;namespace Fountain.Net.Base.Sample
{public class Cars{/// <summary>/// 品牌/// </summary>private  string brand =string.Empty;/// <summary>/// /// </summary>public string Brand{get { return brand; }set { brand = value; }}/// <summary>/// 构造函数/// </summary>public Cars(){Console.WriteLine("已声明创建对象");}/// <summary>/// 析构函数/// </summary>~ Cars(){Console.WriteLine("对象已被删除");}}
}
//== 引用
using System;namespace Fountain.Net.Base.Sample
{class Program{static void Main(string[] args){Cars cars=new Cars();// 设置cars.Brand="dotNet开发技术分享";// 获取后输出Console.WriteLine(string.Format("汽车品牌:{0}",cars.Brand));//Console.ReadLine();}}
}//== 结果
已声明创建对象
汽车品牌:dotNet开发技术分享对象已被删除
3、析构函数

        析构函数是一种特殊的成员函数,用于在对象被销毁时执行必要的释放资源。

        析构函数特性:一个类只能有一个、无法继承或重载、无法调用、既没有修饰符,也没有参数。

//== 引用
using System;namespace Fountain.Net.Base.Sample
{class Program{static void Main(string[] args){Cars cars=new Cars();// 设置cars.Brand="dotNet开发技术分享";// 获取后输出Console.WriteLine(string.Format("汽车品牌:{0}",cars.Brand));}}
}//== 结果
已声明创建对象
汽车品牌:dotNet开发技术分享
对象已被删除
4、抽象类

        以abstract 关键字修饰符用于定义抽象类,不完整,并且它仅用作基类。抽象类有几个特性,包括不能直接实例化不能被密封、允许但非必须包含抽象成员

using System;namespace Fountain.Net.Base.Sample
{/// <summary>/// 定义动物抽象类/// </summary>public abstract class Animal{public abstract void Run(); }/// <summary>/// 定义由动物类派生猫/// </summary>public class Cat : Animal{public override void Eat(){// 输出Console.WriteLine("小猫吃鱼");}}
}
//== 引用
using System;namespace Fountain.Net.Base.Sample
{class Program{static void Main(string[] args){Cat cat=new Cat();// 调用方法cat.Eat();Console.ReadLine();}}
}
5、密封类

        以sealed关健字修饰符定义的类,密封类特性有不能被继承。如果是密封成员,则派生类中不能对其重写该成员。密封成员属性可提高反射在检索属性时的性能。

using System;
using System.Collections.Generic;namespace Fountain.Net.Base.Sample
{/// <summary>/// 密封类/// </summary>public sealed class Users{/// <summary>/// 用户ID/// </summary>public string UserId { get; set; }/// <summary>/// 用户名称/// </summary>public string UserName { get; set; }/// <summary>/// 密封并重写基类中的ShowInfo方法/// /// </summary>public bool Login(){try{return true;}catch(Exception exception){throw new Exception(exception.Message);}}/// <summary>/// 获取用户列表/// </summary>/// <returns></returns>public Dictionary<string,string> Getuser(){try{Dictionary<string, string> userList = new Dictionary<string, string>();userList.Add("ID20240001", "A用户");userList.Add("ID20240002", "B用户");userList.Add("ID20240003", "C用户");userList.Add("ID20240004", "D用户");return userList;}catch (Exception exception){throw new Exception(exception.Message);}}}
}
using System;namespace Fountain.Net.Base.Sample
{class Program{static void Main(string[] args){Users users = new Users();users.UserId="ID20240001";users.UserName="A用户";Console.WriteLine(string.Format("用户:{0}-{1} 登录状态:{2}",users.UserId,users.UserName,users.Login()));Dictionary<string, string> userList = users.Getuser();foreach (string item in userList.Keys){Console.WriteLine(string.Format("在线用户:{0}-{1}", item, userList[item]));}Console.ReadLine();}}
}// 输出结果
用户:ID20240001-A用户 登录状态:True
在线用户:ID20240001-A用户
在线用户:ID20240002-B用户
在线用户:ID20240003-C用户
在线用户:ID20240004-D用户
6、静态类

        以static关健字修饰符定义的类,静态类主要特性有不能实例化、仅包含静态成员、密封的、不能包含实例构造函数。

using System;
using System.IO;namespace Fountain.Net.Base.Sample
{/// <summary>/// 静态类/// </summary>public static class Logs{// 静态字段 当前程序的执行路径private static string path=System.AppDomain.CurrentDomain.BaseDirectory;/// <summary>/// 写日志内容的静态方法/// </summary>/// <param name="content">内容</param>public static void Writting(string content) {try{// 根据日期定义文件名称string filename = string.Format("{0}.log",DateTime.Now.ToString("yyyyMMddHH"));// 将内写转成字节byte[] contentArray = System.Text.Encoding.UTF8.GetBytes(content);// 创建文件流using (FileStream fileStream = new FileStream(path + Path.DirectorySeparatorChar + filename, FileMode.Append, FileAccess.Write, FileShare.ReadWrite)){fileStream.Seek(0, System.IO.SeekOrigin.End);// 写入流fileStream.Write(contentArray, 0, contentArray.Length);}}catch(Exception exception){throw new Exception(exception.Message);}}}
}// 应用
// 静态类 不用创建实列直接调用
Logs.Writting("测试静态类的调用");

小结

        以上是C#中面向对象基础的类的全部内容,希望对大家理解类一定的参考借鉴价值, 敬请关注后续内容。

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

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

相关文章

设计模式——建造者模式03

工厂模式注重直接生产一个对象&#xff0c;而建造者模式 注重一个复杂对象是如何组成的&#xff08;过程&#xff09;&#xff0c;在生产每个组件时&#xff0c;满足单一原则&#xff0c;实现了业务拆分。 设计模式&#xff0c;一定要敲代码理解 组件抽象 public interface …

腾讯云4核8G服务器多少钱?4C8G可以干啥?

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

鸿蒙系统:华为打造的全新智能生态

在当今的数字化时代&#xff0c;智能手机操作系统的重要性不言而喻。而在这个领域&#xff0c;华为推出的鸿蒙系统无疑是一个引人注目的新星。作为华为自主研发的操作系统&#xff0c;鸿蒙系统不仅承载着华为对于智能生态的雄心壮志&#xff0c;更是中国科技创新实力的体现。 …

JRT简化开发环境

JRT是完全前后端分离的项目&#xff0c;实际工程是逻辑上完全前后端分离&#xff0c;代码层级和工程是不离的。这样就可以做到一键启动&#xff0c;同时又有分离的好处。开始页面后缀都沿用aspx&#xff0c;最开始考虑过修改后缀为html&#xff0c;当时觉得搞aspx也不错&#x…

Mysql安装(命令方式安装)

下载mysql压缩包 Mysql可以使用界面安装&#xff0c;也可以使用命令的方式安装&#xff0c;今天我们使用命令的方式安装mysql。首先下载mysql压缩包&#xff08;下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/&#xff09;&#xff0c;解压到你想要安装的目录。 …

Shell脚本教程

Shell脚本教程 1. Shell是什么 shell 是一种命令解释器&#xff0c;用户与操作系统内核之间的交互界面&#xff0c;当你登录了Linux后&#xff0c;看到的就是shell shell其实这个脚本语言是使用C语言开发编写的 而我们通常所讲的bash &#xff0c;其实是Shell的一种具体实现…

算法实验二 矩阵最小路径和 LIS

算法实验课二 矩阵最小路径和 leetcode裸题 最小路径和 给定一个包含非负整数的 *m* x *n* 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示例 1&#xff1a; 输入&…

算法 - 符号表-上

&#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 算法 - 符号表前言初级实现1. 链表实现无序符号表2. 二分查找实现有序符号表 二叉查找树1. get()2. put()3. 分析4. floor()5. rank()6. min()7. deleteMin()8. delete()9. keys()10. 分析 算法 - 符号表 前言 符号表&am…

intellij idea 使用git撤销(取消)commit

git撤销(取消) 未 push的 commit Git&#xff0c;选择分支后&#xff0c;右键 Undo Commit &#xff0c;会把这个 commit 撤销。 git撤销(取消) 已经 push 的 commit 备份分支内容&#xff1a; 选中分支&#xff0c; 新建 分支&#xff0c;避免后续因为操作不当&#xff0c;导…

iOS-App:App Store新的审核政策,在应用隐私清单中声明和解释使用特定API的原因

App Store新的审核政策&#xff0c;在应用隐私清单中声明和解释使用特定API的原因 设备/引擎&#xff1a;Mac&#xff08;11.6&#xff09;/Mac Mini 开发工具&#xff1a;终端 开发需求&#xff1a;苹果官方邮件通知&#xff0c; App Store新的审核政策&#xff0c;在应用隐…

【Java笔记】多线程0:JVM线程是用户态还是内核态?Java 线程与OS线程的联系

文章目录 JVM线程是用户态线程还是内核态线程什么是用户态线程与内核态线程绿色线程绿色线程的缺点 线程映射稍微回顾下线程映射模型JVM线程映射 线程状态操作系统的线程状态JVM的线程状态JVM线程与OS线程的状态关系 Reference 今天复盘一下Java中&#xff0c;JVM线程与实际操作…

CCIE-08-BGP-Listen

目录 实验条件网络拓朴实验目的 开始配置配置动态路由协议配置BGP检查邻居配置 实验条件 网络拓朴 实验目的 将R1配置成Listen状态&#xff0c;自动接收来自其它路由器的建邻居请求、建立邻居 开始配置 配置动态路由协议 这里用EIGRP来配置&#xff0c;保证网络的可达性&a…

替代 Redis 和 Memcached:25 倍吞吐量! | 开源日报 No.213

dragonflydb/dragonfly Stars: 22.4k License: NOASSERTION Dragonfly 是一个内存数据存储&#xff0c;适用于现代应用工作负载&#xff0c;可替代 Redis 和 Memcached。与传统的内存数据存储相比&#xff0c;Dragonfly 提供了 25 倍的吞吐量、更高的缓存命中率和更低尾部延…

基于springboot的粮仓管理系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

java数组.day16(冒泡排序,稀疏数组)

冒泡排序 冒泡排序无疑是最为出名的排序算法之一&#xff0c;总共有八大排序! 冒泡的代码还是相当简单的&#xff0c;两层循环&#xff0c;外层冒泡轮数&#xff0c;里层依次比较&#xff0c;江湖中人人尽皆知。 我们看到嵌套循环&#xff0c;应该立马就可以得出这个算法的时…

TensorBoard可视化+Confustion Matrix Drawing

for later~ 代码阅读 1. 加载trainset import argparse import logging import os import numpy as npimport torch from torch import distributed from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriterfrom backbones import get_…

2024年150道高频Java面试题(十七)

33. Stream API 在 Java 8 中是如何简化集合操作的 Java 8 引入的 Stream API 是一个强大的新特性&#xff0c;它极大地简化了集合操作的复杂性&#xff0c;提高了代码的可读性和效率。Stream API 允许开发人员以声明式的方式处理数据集合&#xff08;比如集合、数组等&#x…

1.Spring Boot框架整合

Spring Boot项目创建&#xff08;约定大于配置&#xff09; 2.1.3.RELEASE版本示例 idea创建 从官网下载&#xff08;https://start.spring.io/&#xff09;单元测试默认依赖不对时&#xff0c;直接删除即可 Web支持&#xff08;SpringMVC&#xff09; <dependency>&…

Collection与数据结构 链表与LinkedList(三):链表精选OJ例题(下)

1. 分割链表 OJ链接 class Solution {public ListNode partition(ListNode head, int x) {if(head null){return null;//空链表的情况}ListNode cur head;ListNode formerhead null;ListNode formerend null;ListNode latterhead null;ListNode latterend null;//定义…

见证历史:Quantinuum与微软取得突破性进展,开启了可靠量子计算的新时代!

Quantinuum与微软的合作取得了重大突破&#xff0c;将可靠量子计算带入了新的时代。他们结合了Quantinuum的System Model H2量子计算机和微软创新的量子比特虚拟化系统&#xff0c;在逻辑量子比特领域取得了800倍于物理电路错误率的突破。这一创新不仅影响深远&#xff0c;加速…