C#继承与多态

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

继承:继承即在符合is-a关系的条件前提。子类继承父类的共有属性与方法,并且可以有自己独立于父类之外子类特有的方法和属性就叫继承

代码举例如下:


class Person
    {
        //姓名
        public string Name { get; set; }
        //年龄
        public int Age { get; set; }
        //性别
        public string Sex{ get; set; }
        //父类构造函数
        public Person(string name,int age,string sex){
            this.Name=name;
            this.Age=age;
            this.Sex=sex;
        }
    }
    class Student: Person
    {
        //学生学号
        public string StuNo{get;set;}
        //子类构造函数
        public Student(string stuNo,string name,int age,string sex):base(name,id,sex){
            this.StuNo=stuNo;
        }
    }


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

多态:一种方法通过不同形式所表达的多种形态称为多态

代码举例如下:

class Person
    {
        public virtual void Show()
        {
            Console.WriteLine("教师开始教学");
        }
    }
    class Student: Person
    {    
        //重写父类的方法
        public override void Show()
        {
            Console.WriteLine("学生开始上课");
        }
    }
  static void main(String[] args) {
        //创造父类类型接收实例化子类的对象
        Person p= new Student();
        //根据new的具体对象调用具体的子类方法,输出学生上课实现了多态的调用
        p.Show();
        Console.ReadLine();
    }


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

抽象类:

(1)抽象类用abstract关键字修饰抽象成员必须在抽象类中声明,

(2)但抽象类不要求必须包含抽象成员,抽象类只能当做基类使用,而不能直接实例化。

(3)抽象类的用途提供多个派生类可共享的基类的公共定义

(4)抽象类中的抽象方法必须被子类override <重写>

public abstract class BaseClass

{

public abstract void Eat();

public abstract void Walk();

public abstract void Speak();

}


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

相同点:

(1) 都不能被实例化

(2) 都可以包含方法声明

(3) 都能被继承或实现

不同点:

(1)抽象类可以有构造方法,接口中不能有构造方法。

(2)抽象类中可以有普通成员变量,接口中没有普通成员变量(接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final)

(3)抽象类中可以包含静态方法,接口中不能包含静态方法

(4) 一个类可以实现多个接口,但只能继承一个抽象类。

(5)接口可以被多重实现,抽象类只能被单一继承

(6)如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法

  (7)  接口定义的关键字interface;抽象类定义的关键字abstract

 (8)抽象类继承的关键字extends,接口的实现关键字implements

   (9)  抽象类可以提供成员方法的实现细节,可以用public 、protected、default这些修饰符;接口只能是public abstract方法
5:抽象方法和虚方法的不同点和相同点?

相同点:

(1)派生类必须实现该方法

(2)都可以被重写

不同点:

(1)抽象方法用abstract修饰,虚方法用virtual修饰

(2)抽象方法不能有方法体,虚方法必须有

(3)抽象方法必须被重写,虚方法可以不被重写

(4)抽象方法只能定义在抽象类中,虚方法只要不是密封类都可以定义
6:定义抽象类和抽象方法的关键字?

抽象方法用abstract修饰,抽象类也用abstract修饰
7:书本上XML那一章中有哪些方法?代码一一举例

string path = @"C:\zixizuoye\bookstore.xml";
            //获取Xml对象的方法
            XmlDocument myxml = new XmlDocument();
            //读取Xml结构方法
            myxml.Load(path);
            //获取指定文件的根节点方法
            XmlElement el = myxml.DocumentElement;
            //循环遍历根节点的子节点并输出
            foreach (XmlNode item in el.ChildNodes)
            {
                foreach (XmlNode nodes in item.ChildNodes)
                {
                    Console.WriteLine(nodes.InnerText);
                }
            }
            Console.ReadLine();


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

string path = @"C:\zixizuoye\h.txt";
            string path2= @"E:\h.txt";
            FileInfo file = new FileInfo(path);
            //判断文件是否存在
            Console.WriteLine(file.Exists);
            Console.WriteLine(file.Name);
            Console.WriteLine(file.DirectoryName);
    //复制
            file.CopyTo(path2);
    //删除
            File.Delete(path2);
    //移动
            file.MoveTo(path2);
            Console.ReadLine();

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值