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);
}
}
}