首页 > 代码库 > c#笔记(十一)————接口泛型
c#笔记(十一)————接口泛型
1. 接口:
定义IBattle接口、声明攻击Attack(),移动Move(), 跳跃Jump()等方法;
定义IRest接口、声明SitDown(),Sleep()等方法;
定义Soldier(战士)、Master(法师)、Assassin(刺客)、Archer(弓箭手)等类,继承上述接口,并实现内部方法。
2. 定义MyList类,该类模拟一个动态数组,可以用来存放数据(以int类型为例)。实现如下功能:
1)定义属性Count,表示当前动态数组存放的int型元素个数;
2)定义方法Clear(),可以清空所有的元素;
3)定义方法Add(),可以实现添加元素的功能;
4)定义方法Insert(int value, int index),可以实现在某个位置插入元素的功能;
5)定义方法Reverse(),可以实现元素的反转。
6)定义方法Contains(),可以查找元素是否存在。
3. 老板招募小秘
(1)当秘书必须要实现的协议用接口IScretary表示。
要想当秘书,必须能够实现如下方法:
端茶倒水
开车
捶背
提包等
定义IBattle接口、声明攻击Attack(),移动Move(), 跳跃Jump()等方法;
定义IRest接口、声明SitDown(),Sleep()等方法;
定义Soldier(战士)、Master(法师)、Assassin(刺客)、Archer(弓箭手)等类,继承上述接口,并实现内部方法。
2. 定义MyList类,该类模拟一个动态数组,可以用来存放数据(以int类型为例)。实现如下功能:
1)定义属性Count,表示当前动态数组存放的int型元素个数;
2)定义方法Clear(),可以清空所有的元素;
3)定义方法Add(),可以实现添加元素的功能;
4)定义方法Insert(int value, int index),可以实现在某个位置插入元素的功能;
5)定义方法Reverse(),可以实现元素的反转。
6)定义方法Contains(),可以查找元素是否存在。
3. 老板招募小秘
(1)当秘书必须要实现的协议用接口IScretary表示。
要想当秘书,必须能够实现如下方法:
端茶倒水
开车
捶背
提包等
(2)有两类人前来应聘秘书:
男人类 Man
女人类 Woman
机器人类 Robot
请让以上三个类继承秘书协议,并根据每个类的特点实现协议中的方法
女人类 Woman
机器人类 Robot
请让以上三个类继承秘书协议,并根据每个类的特点实现协议中的方法
(3)在Main方法中分别创建男秘对象和女秘对象,并自行设计模拟情景。
如:有一天老板招了一个男秘,让他干这干那,后来不满意,又招了一个女秘...
再后来科技突飞猛进,老板雇佣了一个不知疲倦聪明又从来不抱怨的机器秘书
2.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*2. 定义MyList类,该类模拟一个动态数组,可以用来存放数据(以int类型为例)。实现如下功能:
1)定义属性Count,表示当前动态数组存放的int型元素个数;
2)定义方法Clear(),可以清空所有的元素;
3)定义方法Add(),可以实现添加元素的功能;
4)定义方法Insert(int value, int index),可以实现在某个位置插入元素的功能;
5)定义方法Reverse(),可以实现元素的反转。
6)定义方法Contains(),可以查找元素是否存在。 */
namespace h2
{
interface IInterface
{
}
class MyList< T>
{
//该字段用来记录数组里面所放元素的个数
private int length;
//用来记录数组的容量,即最多可放元素的个数
private int capacity;
//数组用来存取数据
private T [] a;
//在默认构造方法里面给字段赋初值
public MyList()
{
//数组元素的个数初始值为0
length = 0;
//数组容量初始值为8
capacity = 8;
//给数组开辟空间
a = new T [capacity];
}
/// <summary>
/// 属性,得到数组的元素的个数
/// </summary>
public int Count
{
get
{
return length;
}
}
public void Add(T x)
{
//先判断数组的容量是否可以再返给数据
if (length>=capacity)
{
//如果不能再放入数据,扩充数组容量
}
//把要加的数据方法放到数组里面
a[length] = x;
//数组元素的个数要加1
length++;
}
/// <summary>
/// 扩充数组容量的方法
/// </summary>
private void EnlargeCapacity()
{
//把容量值增加
capacity += 8;
//根据增加后的容量创建新数组
T[] temp = new T[capacity];
//把a数组里面的元素复制到新数组里面
for (int i = 0; i < length; i++)
{
temp[i] = a[i];
}
//把a指向新数组
a =temp;
}
/// <summary>
/// 清空数组
/// </summary>
public void Clear()
{
//数组元素为0
length = 0;
//数组容量为8
capacity = 8;
//创建一个新的数组
a = new T [capacity];
}
public bool Contains(int x)
{
for (int i = 0; i < length; i++)
{
if (x.Equals(a[i]))
{
return true ;
}
}
return false ;
}
//数组的反转
public void Reverse()
{
for (int i = 0; i < length/2; i++)
{
T temp = a[i];
a[i] = a[length - 1 - i];
a[length - 1 - i] = temp;
}
}
/// <summary>
/// 插入
/// </summary>
/// <param name=" index"></param>
/// <param name=" num"></param>
public void Insert(int index, T num)
{
if (length>=capacity)
{
EnlargeCapacity();
}
//如果插入的位置在数组之外
if (index<0)
{
Console.WriteLine("index不能小于0" );
return;
}
//如果插入的位置刚好在所有元素的最后面
else if (index ==length)
{
a[index]= num;
length += 1;
}
else if (index >= length + 1)
{
}
else
{
//把数组里面index之后的所有元素往后面移动一位
for (int i = length-1; i >=index; i--)
{
a[i + 1] = a[i];
}
a[index] = num;
length += 1;
}
}
/// <summary>
/// 打印数组
/// </summary>
public void PrintArray()
{
//使用for循环把存到数组a里面的元素打印出来
for (int i = 0; i < length; i++)
{
Console.WriteLine(a[i]);
}
}
}
class Program
{
static void Main(string[] args)
{
MyList<int > list = new MyList< int>();
list.Add(5);
list.Add(6);
list.Add(7);
list.PrintArray();
list.Insert(1, 9);
list.PrintArray();
Console.ReadKey();
}
}
}
c#笔记(十一)————接口泛型
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。