继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
通过继承创建的新类称为“子类”或“派生类”。
被继承的类称为“基类”、“父类”或“超类”。
继承的过程,就是从一般到特殊的过程。
继承方式: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);
}
}
}
小编正在持续努力更新中……