C#继承多态

本文介绍了面向对象编程中的核心概念,包括继承、多态、抽象类等,并通过代码示例详细解释了这些概念的应用方式。此外,还对比了抽象类与接口的区别,以及抽象方法与虚方法的不同。

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

继承:在本职上是特殊一般的关系,即常说的is-a关系。子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的 一些属性或方法。

 class person
    {
        //姓名(Name).年龄(Age).性别(Sex)
        public string name { get; set; }
        public int avg { get; set; }
        public string sex { get; set; }

        public person()
        {
        }

        public person(string name, int avg, string sex)
        {
            this.name = name;
            this.avg = avg;
            this.sex = sex;
        }
    }
class Student : person
    {
        public int c { get; set; }
        public int java { get; set; }
        public int sql { get; set; }
        public int mysql { get; set; }
        public int sqlyog { get; set; }
        public Student()
        {

        }

        public Student(int c, int java, int sql, int mysql, int sqlyog)
        {
            this.c = c;
            this.java = java;
            this.sql = sql;
            this.mysql = mysql;
            this.sqlyog = sqlyog;
        }

        public Student(string name, string sex, int avg, int c, int java, int sql, int mysql, int sqlyog) : base(name, avg, sex)
        {
            this.c = c;
            this.java = java;
            this.sql = sql;
            this.mysql = mysql;
            this.sqlyog = sqlyog;
        }

        public double mark()
        {
            return (c + java + sql + mysql + sqlyog) / 5;
        }
        static void Main(string[] args)
        {
            Student s = new Student("张三","男",18,100,98,80,96,100);
            Console.WriteLine(s.mark()) ;
            
        }
    }


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

多态:

1)一个类实例的相同方法在不同情形下有不同的表现形式。

2)多态机制使得具有不同内部结构的对象可以共享相同的外部接口。


class Person {
    public void print() {
         Console.WriteLine("父类需要改进方法");
    }
 
    public void fun() {
         Console.WriteLine("父类中的其他方法");
    }
}
class Student:Person {
 
    @Override
    public void print() {
         Console.WriteLine("子类改进后的方法");
    }
}
public class Text{
    public static void main(String[] args) {
        Person per = new Student();
        per.print();
        per.fun();
        Console.ReadLine();
    }
}


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

由abstract修饰的类叫抽象类。抽象的类无法进行实例化,因为他不是具体存在的类,或者说这样的类还不够完善,不能直接使用new关键字调用其构造器生成该类的对象。我们可以使用abstract定义一个抽象类。

abstract class 类名

{

abstract int 方法名(int x,int y);

}


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

相同点:

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

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

不同点:

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

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

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

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

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



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

不同点

(1)方法关键字不一样

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

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

(2)基类的方法是否有方法体/实现

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

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

共同点:

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

(2)二者都不能实例化

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

(4)派生类必须实现未实现的方法

 

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

abstract


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

public void Show(string path)
        {
            XmlDocument xml = new XmlDocument();
            xml.Load(path);
            XmlNode x = xml.DocumentElement;
            foreach (XmlNode item in x)
            {
                Console.WriteLine(item.Name); 
            }
}


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

//代码
class Class1
    {
        //复制
        public void Copy(string oldpath,string newpath) {
            File.Copy(oldpath,newpath);
        }
        //删除
        public void Delete(string path) {
            File.Delete(path);
        }
        //移动
        public void Move(string oldpath, string newpath) {
            File.Move(oldpath, newpath);
        }
}
//控制台
class Program
    {
        static void Main(string[] args)
        {
            Class1 c = new Class1();
            c.Copy("F:\\a\\hhh.txt", "F:\\b\\hhh.txt");
            c.Move("F:\\a\\hhh.txt", "F:\\b\\2.txt");
            c.Delete( "F:\\b\\2.txt");
        }
      
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值