Net基础复习

今天在云和学院复习了之前学的C#知识

面向对象

练习:磁盘上有不同的文件,比如:.txt文本文件、.doc视频文件、.xls电子表格。要求:编写一个控制台程序,用户输入一个带后缀名的文件,将该文件名传递到一个方法中,该方法中根据用户输入的文件名后缀,返回一个对应的文件对象。提示:编写不同的类模拟不同的文件、为不同的文件类创建统一的父类、使用简单工厂实现。

 class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入文件名:");
            string strname=Console.ReadLine();
            factory fa = new factory();
            AbFile af = fa.CreateFile(strname);
            af.GetFileName();
            Console.ReadKey();
        }
    }
}
abstract  class AbFile
    {
      abstract public void GetFileName();
    }
class doc:AbFile
    {
        public override void GetFileName()
        {
            Console.WriteLine("我是doc文件,用Word文档打开");
        }
    }


 class txt:AbFile
    {
        public override void GetFileName()
        {
            Console.WriteLine("我是一个txt文件,用记事本打开");
        }
    }


 class xls:AbFile
    {
        public override void GetFileName()
        {
            Console.WriteLine("我是xls文件,用Exel表打开");
        }
    }


 class factory
    {
        public AbFile CreateFile(string filename)
        {
            string[] str = filename.Split('.');
            switch(str[1])
            {
                case "txt":return new txt();

                case "doc": return new doc();
                default: return new xls();
                    
            }
        }
    }

 虚方法、抽象方法

•关于虚方法需要注意的几点:
•1.父类中如果有方法需要让子类重写,则可以将该方法标记为virtual
•2.虚方法在父类中必须有实现,哪怕是空实现。
•3.虚方法子类可以重写(override),也可以不重写
•关于抽象方法注意的几点:
•1.需要用abstract关键字标记
•2.抽象方法不能有任何方法实现。
•3.抽象成员必须包含在抽象类中。
•4.由于抽象成员没有任何实现,所以子类必须将抽象成员重写。
•5.抽象类不能实例化,
•抽象类的作用:抽象类的作用就是为了让子类继承。
•6.抽象类中可以包括抽象成员,可以包括有具体代码的成员。
•7. 还有抽象方法不能用static修饰
练习:动物Animal 都有吃Eat和叫Bark的方法,狗Dog和猫Cat叫的方法不一样.父类中没有默认的实现所哟考虑用抽象方法。
abstract   class Animal
    {
        public string Name { set; get; }
        abstract public void Eat();

        abstract public void Berk();  
    }

class Cat:Animal
    {
        public override void Eat()
        {
            Console.WriteLine("猫吃鱼");
        }
        public override void Berk()
        {
            Console.WriteLine("喵喵");
        }
    }


 class Dog:Animal
    {
        public override void Eat()
        {
            Console.WriteLine("狗吃骨头");
        }
        public override void Berk()
        {
            Console.WriteLine("汪汪");
        }
    }



class Program
    {
        static void Main(string[] args)
        {
            Cat c = new Cat();
            c.Berk();
            c.Eat();
            Dog d = new Dog();
            d.Berk();
            d.Eat();
            Console.ReadKey();
        }
    }

原文地址:https://www.cnblogs.com/songfang/p/4138366.html