C#练习

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


    public class Person
    {
        public string name; //定义域
        public int age;
        virtual public void SayHello()
        { //定义方法 //virtual表示可以被子类override
            Console.WriteLine("Hello!  My name is " + name);
        }
        public void SayHello(Person another)
        {  //构造方法重载同名的sayHello方法
            Console.WriteLine("Hello," + another.name +
                "! My name is " + name);
        }
        public bool IsOlderThan(int anAge)
        { //定义方法
            bool flg;
            if (age > anAge) flg = true; else flg = false;
            return flg;
        }
        public Person(string n, int a)
        { //构造方法
            name = n;
            age = a;
        }
        public Person(string n)
        { //构造方法重载
            name = n;
            age = -1;
        }
        public Person() : this("", 0)//调用其他构造方法
        {
        }
    }
 
 
    public class Student : Person  //定义子类
    {
        public string school; //增加的字段
        public int score = 0;
        public bool isGoodStudent()
        { //增加的方法
            return score >= 90;
        }
        override public void SayHello()
        { //override覆盖父类的方法
            base.SayHello();
            Console.WriteLine("My school is " + school);
        }
        public void SayHello(Student another)
        { //增加的方法
            Console.WriteLine("Hi!");
            if (school == another.school)
                Console.WriteLine(" Shoolmates ");
        }
 
        public Student()
        {  //构造方法
        }
        public Student(string name, int age, string school)
            : base(name, age) //调用父类的构造方法
        {
            this.school = school;
        }
 
        public void TestThisSuper()
        {
            int a;
            a = age;      //本句与以下两句效果相同
            a = this.age; //使用this
            a = base.age; //使用base
        }
    }
        class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person("Liming", 50);
            Student s = new Student("Wangqiang", 20, "PKU");
            Person p2 = new Student("Zhangyi", 18, "THU");
            Student s2 = (Student)p2; //类型转换
        }

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

 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:什么是抽象类?代码举例说明

public abstract class Animal
{
    protected string face;
    protected Animal() { this.face = "^_^"; /*抽象类构造函数初始化的例子*/}
    public abstract void eat();
    public abstract string Face
    {
        get;
    }
}

public class dog : Animal
{
    //重写基类中的抽象访问器Face
    public override string Face
    {
        get
        {
            return face;
        }
    }
    //重写基类中的抽象方法eat
    public override void eat()
    {
        Console.WriteLine("狗吃骨头 " + Face);
    }
}

public class cat : Animal
{
    public override string Face
    {
        get
        {
            return face;
        }
    }

    public override void eat()
    {
        Console.WriteLine("猫吃鱼 " + Face);
    }
}

public class panda : Animal
{
    public override string Face
    {
        get
        {
            return face;
        }
    }

    public override void eat()
    {
        Console.WriteLine("熊猫吃竹子 " + Face);
    }
}

public class MainFun
{
    static void Main()
    {
        Animal[] anim = new Animal[3];
        anim[0] = new dog();
        anim[1] = new cat();
        anim[2] = new panda();
        anim[0].eat();
        anim[1].eat();
        anim[2].eat();
        Console.ReadKey();
    }
}

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

相同点:

1.抽象类和接口都不能实例化对象,但是可以定义抽象类和接口类型的引用;

2.继承抽象类和实现接口都要对其中的抽象方法全部实现;

不同点:

1.接口比抽象类更加抽象,抽象类中可以定义构造方法(构造器),可以有抽象方法和具体方法,

而接口中的方法全部都是抽象方法(接口中也可以没有方法,这样的接口称为空接口)

2.抽象类中的方法可以是private,protected,public,接口全部都是public

3.抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量(final)

4.有抽象方法的类必须声明为抽象类,而抽象方法未必要有抽象方法
 

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

抽象方法用abstract修饰
不允许有方法体
必须被子类override
只能在抽象类中


虚方法用virtual修饰
要有方法体,哪怕是一个分号
可以被子类override
除了密封类外都可以写

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

关键字:abstract

7:书本上XML那一章中有哪些方法?代码一一举例

public void Read(string path) {
            //创建XML对象
            XmlDocument doc=new XmlDocument();
            //读取Xml文档
            doc.Load(path);
            //读取根节点
            XmlNode engineer = doc.DocumentElement;
            //循环遍历子节点
            foreach (XmlNode node in engineer.ChildNodes)
            {

            }
        }

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

 
            ///检查文件是否存在
 public void isExists(string path)
 {
 if (File.Exists(path))
 {
 Console.WriteLine("该文件存在");
}
 }
 
///复制
 
public void Copy(string num, string mum)
            {
                File.Copy(num, mum);
            }
 
 
///移动
 public void lin(string num)
 {
 File.Delete(num);
}
 
 
///删除
 
public void lin(string num, string mum)
{
File.Move(num, mum);
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值