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

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

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

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

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

继承方式: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);
        }
    }
        
 }

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


猜你喜欢

转载自blog.csdn.net/mirabellezwh/article/details/80590738