C#学习笔记之继承

1、子类能继承父类的方法和属性,但是私有字段不能继承。


2、继承的特性:

(1)、单根性:一个子类只能有一个父类

(2)、传递性:孙子类继承父类,父类继承祖父类,那么孙子类既可以继承父类的方法和属性,也可以继承祖父类的方法和属性。


3、虽然子类不能继承父类的构造函数,但是当父类中存在有参构造函数而没有无参构造函数时,子类的实例化会失败,错误信息如下:

这是因为,当实例化子类对象的时候,首先会在子类对象内部创建一个父类的对象,因为,只有创建父类对象之后才能调用父类的属性和方法。而创建父类对象的时候,默认调用的是父类的无参构造函数,所以当父类中没有无参构造函数时,程序会报错。

解决办法有两种:

(1)、在父类中手动写一个无参构造函数;

(2)、显示地调用父类的构造函数,使用关键字base,用法如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            son s = new son("张三", 22, '男');
            s.SayHello();

            Console.ReadKey();
        }
    }

    public class father
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public char Gender { get; set; }

        // 父类的无参构造函数
        public father(string name, int age, char gender)
        {
            this.Name = name;
            this.Age = age;
            this.Gender = gender;
        }
    }

    public class son : father
    {
        // 子类的构造函数,用关键字base显示地调用父类的无参构造函数。
        public son(string name, int age, char gender)
            : base(name, age, gender)
        { }
        
        public void SayHello()
        {
            Console.WriteLine("我叫{0}, 我今年{1}岁, 我是{2}的!", this.Name, this.Age, this.Gender);
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值