【C#】——面向对象——继承(1)

本文介绍了C#中的继承概念,包括子类与基类的定义,以及public、protected和private三种继承方式的特性。重点阐述了继承如何实现从一般到特殊的过程,并探讨了实现继承、接口继承和可视继承的不同。同时,给出了C#创建派生类的语法示例。

继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

      通过继承创建的新类称为“子类”或“派生类”。

      被继承的类称为“基类”、“父类”或“超类”。

继承的过程,就是从一般到特殊的过程。

继承方式:public、protected和private。

       前两种方式保持基类的所有成员的属性不变,且派生类可以访问基类的public和protected成员,但仍不能访问基类的private成员;private继承将使得基类的所有成员在派生类中表现为private属性。

         要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。

实现方式:实现继承、接口继承、可视继承。

       实现继承是指使用基类的属性和方法而无需额外编码的能力。

       接口继承是指仅使用属性和方法的名称,但是子类必须提供实现的能力。

       可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

C#中创建派生类的语法如下:

<acess-specifier>class <base_class>
{
...
}
class <derived_class> : <base_class>
{
...
}

【举个栗子】

namespace ConsoleApplication5
{
    class Program
    {
    
        static void Main(string[] args)
        {
            Person p = new Person("张三",'男',34);
            p.Show();

            Student stu = new Student("小赵", 18, '女', "9527250");
            stu.SayHello();
            //子类中如果有有参数的构造函数,会默认的去调用父类中的无参数的构造函数
            Console.ReadKey();
        }
    }
    public class Person
    {
        public Person()
        {
        }
        public Person(string name, char gender, int age)
        {
            this._name = name;
            this._gender = gender;
            this._age = age;
        }
        string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        int _age;
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
        char _gender;

        public char Gender
        {
            get { return _gender; }
            set { _gender = value; }
        }

        public void Show()
        {
            Console.WriteLine("我叫{0},是{1}同学,我今年{2}岁了", this.Name, this.Gender, this.Age);
        }
    }

    public class Student : Person
    {
        public Student(string name, int age, char gender, string id)
            : base(name, gender, age)
        {
            this.Id = id;
        }

        string _id;
        public string Id
        {
            get { return _id; }
            set { _id = value; }
        }
        public void SayHello()
        {
            Console.WriteLine("我叫{0},我今年{1}岁了,是{2}同学", this.Name, this.Age, this.Gender);
        }
    }
        
 }

小编正在持续努力更新中……


评论 23
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值