一、接口
接口定义了所有继承它的类都需要遵循的契约。
解释:接口定义了“一个类应当怎样”,而继承它的类则定义了“如何将它实现”。
优势:多继承能力(一条鱼可以是捕食者也可以是被捕食者);必须实现所有类,便于实现框架集成。
如下代码中,老鹰是捕食者,继承IPredator(一般传统命名规则,实现接口的类加I);
兔子是被捕食者,继承IPrey;一条鱼可以是捕食者也可以是被捕食者,继承IPredator,IPrey
using System;
using System.Net.Http.Headers;
namespace MyFirstApplication
{
class Program
{
static void Main(string[] args)
{
Rabbit rabbit = new Rabbit();
Hawk hawk = new Hawk();
Fish fish = new Fish();
rabbit.Flee();//兔子是被捕食者
hawk.Hunt();//老鹰是捕食者
fish.Hunt();//鱼既是捕食者又是被捕食者
fish.Flee();
}
}
interface IPrey
{
public void Flee();
}
interface IPredator
{
public void Hunt();
}
class Hawk : IPredator
{
public void Hunt()
{
Console.WriteLine("the hawk is searching for food!");
}
}
class Rabbit : IPrey
{
public void Flee()
{
Console.WriteLine("the rabbit runs away!");
}
}
class Fish : IPrey, IPredator
{
public void Hunt()
{
Console.WriteLine("the fish is searching for smaller food!");
}
public void Flee()
{
Console.WriteLine("the fish swims away!");
}
}
}
二、列表List
1、与普通的数组相似,List可以表示一个对象的列表,通过索引(index)可以访问,不同的是List可以动态增加或者减少数量,缺点是更消耗内存。
2、方法包括Add,Insert,Remove等,用之前要先声明实例再用,如"实例.add();" 。
3、List在System.Collections.Generic下,用之前要注意using这个库。
using System;
using System.Collections.Generic;
namespace MyFirstApplication
{
class Program
{
static void Main(string[] args)
{
List<String> food = new List<string>();
food.Add("Hamburger");
food.Add("Pizza");
food.Add("Hotdog");
food.Add("Fries");
Console.WriteLine(food[0]);
Console.WriteLine("-------------------");
foreach(String item in food)
{
Console.WriteLine(item);
}
Console.WriteLine("--------------------");
food.Remove("Fries");
food.Insert(0, "sushi");
food.Insert(2, "sushi");
foreach (String item in food)//输出列表
{
Console.WriteLine(item);
}
Console.WriteLine(food.Count);
Console.WriteLine(food.IndexOf("sushi"));
Console.WriteLine(food.LastIndexOf("sushi"));
Console.WriteLine(food.Contains("Fries"));
food.Sort();//根据字母表顺序排序
food.Reverse();//倒序
Console.WriteLine("-----------------");
String[] foodArray = food.ToArray();//变为数组
foreach(String item in foodArray)//输出数组
{
Console.WriteLine(item);
}
}
}
}
输出:
Hamburger
-------------------
Hamburger
Pizza
Hotdog
Fries
--------------------
sushi
Hamburger
sushi
Pizza
Hotdog
5
0
2
False
-----------------
sushi
sushi
Pizza
Hotdog
Hamburger
三、对象的列表List<object>
using System;
using System.Collections.Generic;
namespace MyFirstApplication
{
class Program
{
static void Main(string[] args)
{
List<Player> players = new List<Player>();
/*
Player player1 = new Player("John");
Player player2 = new Player("Steve");
Player player3 = new Player("Karen");
players.Add(player1);
players.Add(player2);
players.Add(player3);
*/
players.Add(new Player("John"));
players.Add(new Player("Steve"));
players.Add(new Player("Karen"));
//效果同上,类似数组,不需要再实例化每个Player
foreach (Player player in players)
{
Console.WriteLine(player.ToString());
}
}
class Player
{
public String name;
public Player(String name)
{
this.name = name;
}
public override string ToString()
{
return name;
}
}
}
}
输出:
John
Steve
Karen

2177

被折叠的 条评论
为什么被折叠?



