今天在云和学院复习了之前学的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();
}
}