类和继承
1、类继承
通过继承我们可以定义一个新的类,新类纳入一个已经声明的类进行扩展
可以用一个已经存在的类作为新类基类。已存在的类称为基类,新类叫派生类
class A //基类
{
...
}
class B : A //派生类
{
...
}
2、访问继承的成员
class A //基类
{
public float PI = 3.1415926;
public void PrintPI()
{
Console.WriteLine(PI);
}
}
class B : A //派生类
{
}
calss Program
{
static void Main()
{
A a1 = new A();
a1.PrintPI();
B b1 = new B();
Console.WriteLine(b1.PI); //访问继承的字段
bi.PrintPI(); //访问继承的函数
}
}
输出结果
3.1415926
3.1415926
3.1415926
3、object类
除了object类,其他类都是派生类,即使他没有基类规格说明,都默认派生自object类
4、屏蔽基类成员
派生类不能删除基类成员,到可以屏蔽基类成员
可用 new 修饰符屏蔽基类成员
屏蔽的类成员可以用 base 关键字访问
class A //基类
{
public int str = "我是基类A";
}
class B : A //派生类
{
new public string str = "我是派生类B"; //用同样的名称屏蔽基类成员
public void Print()
{
Console.WriteLine(str); //访问屏蔽成员
Console.WriteLine(base.str); //访问基类成员
}
}
输出结果
我是派生类B
我是基类A
5、虚方法和覆写方法
派生类的方法和基类的方法要有相同的签名和返回类型
基类的方法使用virtual标注虚方法
派生类中使用override标注覆写方法
class A
{
virtual public int Add(); //声明虚方法
virtual public void Print(); //声明虚方法
}
class B : A
{
override public int Add() //声明覆写方法
{
...
}
override public void Print() //声明覆写方法
{
...
}
}
6、成员访问修饰符
- 1、公有成员的可访问性
- 关键字public
- public访问级别是限制最少的,所有的类和外部类都可以自由的访问成员
- 2、私有成员的可访问性
- 关键字private
- private访问级别是限制最严格的,除了自己类的成员其他类都不可访问,包括继承它的类
- 3、受保护成员的可访问性
- 关键字protected
- protected访问级别和private访问级别相同,不过它能被派生自该类的成员访问
- 4、内部成员的可访问性
- 关键字internal
- 标记internal的成员只能在同一个程序集的类访问,其他程序集不可访问
- 5、受保护内部成员的可访问性
- 关键字protected internal
- 标记 protected internal 的成员只能被同一个程序集的派生自该类的成员访问
成员访问修饰符
修饰符 | 含义 |
---|---|
public | 对任何类可访问 |
private | 只在类的内部可访问 |
protected | 对所有继承该类的类可访问 |
internal | 对该程序集的所有类可访问 |
protected internal | 对该程序集内继承该类的的所有类可访问 |