1.代码举例说明继承
public class Employee
{
//工号
public string ID { get; set; }
//年龄
public int Age { get; set; }
//姓名
public string Name { get; set; }
//性别
public Gender Gender { get; set; }
}
public class SE:Employee
{
public int Popularity { get; set; }
public SE(string id, string name, int age, Gender gender, int popularity)
{
this.ID = id;
this.Name = name;
this.Age = age;
this.Gender = gender;
this.Popularity = popularity;
}
public SE() { }
public string SayHi()
{
string message = string.Format("大家好,我是{0},今年{1}岁,工号是{2},我的人气值高达{3}...", this.Name, this.Age, this.ID, this.Popularity);
return message;
}
}
class Program
{
static void Main(string[] args)
{
SE se = new SE("01", "轰焦冻", 18, Gender.男, 100);
Console.WriteLine(se.SayHi());
Console.ReadKey();
}
}
以上代码的运行结果为运行结果为:
大家好,我是轰焦冻,今年18岁,工号是01,我的人气值高达100...
在定义SE 类的类名后面多出了代码“:Employee”。如class SE:Employee 。
我们把这种方式称之为类的继承。
2.代码举例说明多态
public class Animal
{
public virtual void Eat()
{
Console.WriteLine("Animal eat");
}
}
public class Dog : Animal
{
public override void Eat()
{
Console.WriteLine("Dog eat");
}
}
public class WolfDog : Dog
{
public override void Eat()
{
Console.WriteLine("WolfDog eat");
}
}
class Tester
{
static void Main(string[] args)
{
Animal[] animals = new Animal[3];
animals[0] = new Animal();
animals[1] = new Dog();
animals[2] = new WolfDog();
for (int i = 0; i < 3; i++)
{
animals[i].Eat();
}
}
}
以上代码的运行结果为:
Animal eat...
Dog eat...
WolfDog eat...
在上面的例子中类Dog继承自类Animal,对方法Eat()进行了重写,类WolfDog又继承自Dog,再一次对Eat()方法进行了重写,并很好地实现了多态。不管继承了多少层,都可以在子类中对父类中已经重写的方法继续进行重写,即如果父类方法用override修饰,如果子类继承了该方法,也可以用override修饰,多层继承中的多态就是这样实现的。要想终止这种重写,只需重写方法时用sealed关键字进行修饰即可。
3.代码举例说明抽象类
public abstract class Ball
{
//获取球类的名称
public abstract string GetName { get; }
//打球
public abstract void Play();
}
//足球类
public class FootBall : Ball
{
public override string GetName
{
get { return "足球"; }
}
public override void Play()
{
Console.WriteLine("轰焦冻正在踢足球");
}
}
//篮球类
public class BasketBall : Ball
{
public override string GetName
{
get { return "篮球"; }
}
public override void Play()
{
Console.WriteLine("爆豪胜已正在打篮球");
}
}
static void Main(string[] args)
{
//实例化
FootBall footBall = new FootBall();
BasketBall basketBall = new BasketBall();
footBall.Play();
basketBall.Play();
Console.ReadKey();
}
以上代码的运行结果为:
轰焦冻正在踢足球
爆豪胜已正在打篮球
4.抽象类和接口的相同点和不同点
相同点:
- ① 都可以被继承
- ②都不能被实例化
- ③ 都可以包含方法声明
- ④ 派生类必须实现未实现的方法
区 别:
- ① 接口比抽象类更加抽象,抽象类中可以定义构造方法,可以有抽象方法和具体方法,而接口中的方法全部都是抽象方法;
- ② 抽象类中的方法可以是private,protected,public,接口全部都是public;
- ③ 抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量;
- ④ 接口可以被多重实现,抽象类只能被单一继承;
- ⑤ 接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法;
- ⑥ 接口可以用于支持回调,而继承并不具备这个特点。
5. 抽象方法和虚方法
- ① 抽象方法用abstract修饰,虚方法用 virtual修饰;
- ② 抽象方法不允许有方法体,虚方法要有方法体,即使是一个分号;
- ③ 抽象方法必须被子类override,而虚方法可以被子类override;
- ④ 抽象方法只能在抽象类中定义,而虚方法除了密封类外都可以定义。
6. 定义抽象类和抽象方法的关键字
抽象类用——abstract。
抽象方法用——override。
7. XML常用方法
//Load()方法 读取整个XML的结构
static void Main(string[] args)
{
XmlDocument myxml = new XmlDocument();
myxml.Load(@"D:NuoWei.xml"); //读取指定的XML文档
XmlNode engineer = myxml.DocumentElement; //读取XML的根节点
foreach (XmlNode node in engineer.ChildNodes) //对子节点进行循环
{
//将每个节点的内容显示出来
switch (node.Name)
{
case "ID":
Console.WriteLine("ID:{0}",node.InnerText);
break;
case "Name":
Console.WriteLine("姓名:{0}",node.InnerText);
break;
case "Age":
Console.WriteLine("年龄:{0}",node.InnerText);
break;
}
}
Console.ReadLine();
Console.ReadKey();
}
8.文件操作的常用方法
- ① 判断文件是否存在的方法:File.Exists()
- public static bool Exists(string path);
//示例 if(File.Exists(@"c:\newFile.txt")) //判断文件是否存在 { CopyFile(); //复制文件 DeleteFile(); //删除文件 MoveFile(); //移动文件 } else { MakeFile(); //生成文件 OpenFile(); //打开文件 SetFile(); //设置文件属性 }
上面的代码判断是否存在c:\newFile.txt文件。若存在,先复制该文件,然后其删除,最后将复制的文件移动;若不存在,则先创建该文件,然后打开该文件并进行写入操作,最后将文件属性设为只读、隐藏。
- ②文件复制方法:File.Copy()
- public static void Copy(string sourceFileName,string destFileName,bool overwrite);
//示例 private void CopyFile() { File.Copy(@"c:\newFile.txt",@"c:\BackUp.txt",true); }
上面的代码将c:\newFile.txt复制到c:\BackUp.txt。
由于Cope方法的OverWrite参数设为true,所以如果BackUp.txt文件已存在的话,将会被复制过去的文件所覆盖。
- ③文件移动方法:File.Move()
- public static void Move(string sourceFileName,string destFileName);
//示例 private void MoveFile() { File.Move(@"c:\BackUp.txt",@"d:\BackUp.txt"); }
上面的代码可以将c:\BackUp.txt文件移动到d盘根目录下。
- ④文件删除方法:File.Delete()
- public static void Delete(string path);
//示例 private void DeleteFile() { File.Delete(@"c:\newFile.txt"); }
上面的代码可以将c:\newFile.txt文件删除,如果c:\newFile.txt不存在,也不会引发异常