01:什么是继承?代码举例说明
class People
{
public string Name { get; set; }
public int Age { get; set; }
}
class Student:People
{
}
02:什么是多态?代码举例说明
class People
{
public string Name { get; set; }
public int Age { get; set; }
public virtual void Eat()
{
}
}
class Student:People
{
public override void Eat()
{
Console.WriteLine("我是学生,我在吃饭");
}
}
class Teacher:People
{
public override void Eat()
{
Console.WriteLine("我是老师,我在吃饭。");
}
}
class Program
{
static void Main(string[] args)
{
People people = new Teacher();
people.Eat();
}
}
03:什么是抽象类?代码举例说明
public abstract class PlayBasketball
{
public abstract void Shoot();
}
04:抽象类和接口的相同点和不同点?
相同点
1. 都不能被直接实例化,都可以通过继承实现其抽象方法。
2. 都是面向抽象编程的技术基础,实现了诸多的设计模式。
不同点
1. 接口支持多继承;抽象类不能实现多继承。
2. 接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。
3. 接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。
4. 接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。
5. 接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含 有实现的方法。
6. 接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。
05:抽象方法和虚方法的不同点和相同点?
不同点
方法关键字不一样
虚方法的方法关键字是:virtual。
抽象类的方法关键词是:abstract
共同点
子类/派生类都要重写父类的方法:关键字override。
06:定义抽象类和抽象方法的关键字?
abstract
07:书本上XML那一章中有哪些方法?代码一一举例
加载文件并选出要结点:
1: XmlDocument doc = new XmlDocument();
2: doc.Load(@"..\..\Book.xml");
3: XmlNode root = doc.SelectSingleNode("bookstore");
创建一个结点,并设置结点的属性:
1: XmlElement xelKey = doc.CreateElement("book");
2: XmlAttribute xelType = doc.CreateAttribute("Type");
3: xelType.InnerText = "adfdsf";
4: xelKey.SetAttributeNode(xelType);
创建子结点:
1: XmlElement xelAuthor = doc.CreateElement("author");
2: xelAuthor.InnerText = "dfdsa";
3: xelKey.AppendChild(xelAuthor);
最后把book结点挂接在要结点上,并保存整个文件:
1: root.AppendChild(xelKey);
2: doc.Save(@"..\..\Book.xml");
08:书本上文件那一章中有哪些方法?代码一一举例
C#追加文件
StreamWriter sw = File.AppendText(Server.MapPath(".")+"//myText.txt");
sw.WriteLine("追逐理想");
sw.WriteLine("kzlll");
sw.WriteLine(".NET笔记");
sw.Flush();
sw.Close();
C#拷贝文件
string OrignFile,NewFile;
OrignFile = Server.MapPath(".")+"//myText.txt";
NewFile = Server.MapPath(".")+"//myTextCopy.txt";
File.Copy(OrignFile,NewFile,true);
C#删除文件
string delFile = Server.MapPath(".")+"//myTextCopy.txt";
File.Delete(delFile);
C#移动文件
string OrignFile,NewFile;
OrignFile = Server.MapPath(".")+"//myText.txt";
NewFile = Server.MapPath(".")+"//myTextCopy.txt";
File.Move(OrignFile,NewFile);
C#创建目录
// 创建目录c:/sixAge
DirectoryInfo d=Directory.CreateDirectory("c://sixAge");
// d1指向c:/sixAge/sixAge1
DirectoryInfo d1=d.CreateSubdirectory("sixAge1");
// d2指向c:/sixAge/sixAge1/sixAge1_1
DirectoryInfo d2=d1.CreateSubdirectory("sixAge1_1");
// 将当前目录设为c:/sixAge
Directory.SetCurrentDirectory("c://sixAge");
// 创建目录c:/sixAge/sixAge2
Directory.CreateDirectory("sixAge2");
// 创建目录c:/sixAge/sixAge2/sixAge2_1
Directory.CreateDirectory("sixAge2//sixAge2_1");
递归删除文件夹及文件
<%@ Page Language=C#%>
<%@ Import namespace="System.IO"%>
<Script runat=server>
public void DeleteFolder(string dir)
{
if (Directory.Exists(dir)) //如果存在这个文件夹删除之
{
foreach(string d in Directory.GetFileSystemEntries(dir))
{
if(File.Exists(d))
File.Delete(d); //直接删除其中的文件
else
DeleteFolder(d); //递归删除子文件夹
}
Directory.Delete(dir); //删除已空文件夹
Response.Write(dir+" 文件夹删除成功");
}
else
Response.Write(dir+" 该文件夹不存在"); //如果文件夹不存在则提示
}
string Dir="D://gbook//11";
DeleteFolder(Dir); //调用函数删除文件夹