C#学习第十三天 实现多态:接口;MD5加密

本文介绍了C#中的多态实现,重点讲解了接口的使用,包括接口的定义、特点和显示实现。此外,还探讨了超市收银系统的设计,包括商品类、仓库类和超市类的初步构想。最后,详细阐述了MD5加密的过程,包括如何创建MD5对象和将加密字节数组转换为16进制字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、接口 (实现多态的第三种方法,前面两种是:1. 虚方法;2抽象类)    当类需要多继承的时候,使用接口代替多继承

接口就是一种规范或一种能力  ----继承了这种接口后拥有这种规范或这种能力

1、语法:

[public]  interface 接口名     ------接口名命名规则: I.....able   表示接受某种能力 

{

void Fly();        //接口中不能包含字段
string Test();  // 接口成员不允许定义(没有方法体) 

}

2、接口特征:

1、接口中不能包含字段和构造函数

2、接口成员不允许定义(没有方法体) 

3、接口中的成员不能加访问修饰符,默认是public;  类中的成员默认是private

4、接口可以有:方法、自动属性(没有方法体)、索引器、事件,这三个本质上也就是方法,所以可以说接口只有方法

5、接口的子类必须实现所继承接口的所有成员,否则报错

6、为了多态,接口不能被实例化!也就是说接口不能new(创建对象)

7、接口之间可以继承,并且可以多继承(类不允许)

8、子类同时继承父类和接口的时候,父类必须在接口之前


接口是C#最重要的一个多态

面向对象编程,大多说的就是面向接口编程!

接口在实现多态过程中,类似于父类的用法


3、显示实现接口

显示实现接口是了解决方法的重名问题


三种多态实现方式已经学习完毕,回顾比较一下:

什么时候用虚方法

什么时候用抽象类

什么时候用接口

能找到父类,但是需要实现多态的方法不能确定怎么写 ----用抽象类

能找到父类,需要实现多态的方法可以写   -----用虚方法

不能找到共同父类,或拥有某种相同能力     ----用接口


二、超市收银系统之商品类

1、先提取父类:参考所有商品的共性,商品父类的成员大概有:价格Price、数量count、编号ID(用Guid类产生不重复数字),写三个自动属性,并在构造函数中赋值

2、在分别写子类,和子类初始化构造方法

3、仓库类

1)存储货物:所有货物集合list

list<list<product>> list = new list<list<product>>;  

list<product>代表货架 ,所有货物用货架集合组成,货架又由货物组成


 2)提货  :

3)进货 :


4、超市类 : 


三、MD5加密

1、定义个专门取得MD5的方法

public static string GetMD5(string str)

参数是要加密的字符串,返回值是加密好的字符串

2、开始实现此方法的方法体

MD5是抽象类,不能创建对象,但是有一个Create方法模拟实例化

MD5 md5 = MD5.Create();
3、需要把参数转成字节数组,才能作为参数给对象MD5使用

byte[] buffer = Encoding.Default.GetBytes(str);
4、使用对象md5的方法,完成转换

byte[] MD5Buffer = md5.ComputeHash(buffer);
将需要加密的字符串的字节数组,代入转换,返回加密后的字节数组

5、将加密后的字节数组转回字符串

将字节数组转换成字符串有三种方法:字节数组 ---- 字符串

1)、解码(按编码同样的格式):将字节数组中的每个元素按照指定的编码格式解析成字符串

string  str =  Encoding.Default.GetString(buffer);

编码格式基本包括:Default、 UTF8、 GetEncoding("GBK")
2)、直接将数组ToString()----结果是命名空间
3)、将字节数组中的每一个元素ToString()
第一种和第二种都不行,选用第三种

string result = "";
		for(int i = 0;i<MD5buffer.Length;i++)
			result += MD5buffer[i].ToString("x2");
<pre name="code" class="html">ToString("x2")


里面的参数是输出格式的类型

x ---->   输出16进制的字符串

c----->  输出带钱符号的字符串

x2 ---->补齐0位的 16进制字符串 (作用:对齐位数)












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值