C#继承多态

1:什么是继承?代码举例说明

    就比如说奔驰是汽车的一种符合奔驰(is a)汽车,那汽车就是奔驰的父类
    但是汽车有很多种比如说:奥迪、宝马...他们都是汽车这个类的子类,
    父类有的子类一定有,子类有的父类不一定有。

代码示例:

    /// <summary>
    /// 父类:汽车类
    /// </summary>
    public class Cat
    {
        /// <summary>
        /// 车型
        /// </summary>
        public string Type { get; set; }
        /// <summary>
        /// 车身颜色
        /// </summary>
        public string Headstock { get; set; }
        /// <summary>
        /// 无参构造
        /// </summary>
        public Cat() { }
        /// <summary>
        /// 有参构造
        /// </summary>
        public Cat(string type,string headstock)
        {
            this.Type = type;
            this.Headstock = headstock;
        }
    }
    /// <summary>
    /// 子类:奔驰汽车类
    /// </summary>
    public class Benz:Cat
    {
        /// <summary>
        /// 车轮数
        /// </summary>
        public int Number { get; set; }
        /// <summary>
        /// 无参构造
        /// </summary>
        public Benz() { }
        /// <summary>
        /// 有参构造(继承父类元素)
        /// </summary>
        /// <param name="type">车型</param>
        /// <param name="headstock">车身颜色</param>
        /// <param name="number">车轮数</param>
        public Benz(string type,string headstock,int number) : base(type, headstock)
        {
            this.Type = type;
            this.Headstock = headstock;
            this.Number = number;
        }
    }

2:什么是多态?代码举例说明

    多态按字面的意思就是“多种形态”多态是为了实现接口重用,
    说白了,就是父类引用指向子类的对象(即将子类赋值给父类),进行动态绑定,
    不同的子类有不同的实现。
    下面用常用比喻作一个例子(动物,叫声,不同动物发出的是不同的叫声)

代码示例:

public class Program
    {
        static void Main(string[] args)
        {
            Animal Animal = new Animal();
            Animal dog = new dog(); //允许将子类类型的指针赋值给父类类型的指针。
            Animal cat = new cat();
            Animal cattle = new cattle();

            Animal.sounds();
            dog.sounds(); //接口重用
            cat.sounds();
            cattle.sounds();
            Console.ReadKey();
        }

    }

    class Animal
    {
        public virtual void sounds() //通过虚函数实现
        {
            Console.WriteLine("动物的叫声");
        }
    }

    class dog : Animal
    {
        public override void sounds() //重写、覆盖
        {
            Console.WriteLine("狗的叫声:旺旺...");
        }
    }

    class cat : Animal
    {
        public override void sounds()
        {
            Console.WriteLine("猫的叫声:喵喵...");
        }
    }

    class cattle : Animal
    {
        public override void sounds()
        {
            Console.WriteLine("牛的叫声:哞哞...");
        }
    }

3:什么是抽象类?代码举例说明

    在C#中,凡是包含了无法实现的成员的类就是抽象类抽象成员必须在抽象类中声明,
    但抽象类不要求必须包含抽象成员,抽象类只能当做基类使用,而不能直接实例化。
    抽象类的用途提供多个派生类可共享的基类的公共定义。

public abstract class BaseClass

{

public abstract void Eat();

public abstract void Walk();

public abstract void Speak();

}

public class human:BaseClass

{

public void Eat()

{

Console.WriteLine(“I can eat”);

}

public void Walk()

{

Console.WriteLine(“I can walk”);

}

public void Speak()

{

Console.WriteLine(“I can speak”);

}

]

class program

{

static void Main(string []args)

{

human man=new human();

Console.WriteLine(man.Walk);

Console.Readkey();

}

}

4:抽象类和接口的相同点和不同点?

相同点:

1、不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

2、抽象类里的抽象方法必须全部被子类所实现,子类不能全部实现父类抽象方法,那么该子类还只能是抽象类。一个类实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

不同点:

1、抽象类可以有构造器,接口不能有构造器。

2、抽象类可以继承一个类和实现多个接口;接口只可以继承一个或多个接口。

5:抽象方法和虚方法的不同点和相同点?

相同点:

子类/派生类都要重写父类的方法:关键字override。

不同点:

虚方法的方法关键字是:virtual。

抽象类的方法关键词是:abstract

虚方法的方法:声明并实现方法。

抽象类的方法:只作声明,无方法体/无实现。

6:定义抽象类和抽象方法的关键字?

abstract

7:书本上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");

8:书本上文件那一章中有哪些方法?代码一一举例

 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); //调用函数删除文件夹 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值