avatar

CSharp-类

类的封装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class A {
private int x = 0;
private int y = 0;
public int X {
get {
return x;
}
set {
x = value;
}
}
public virtual void printX() {
Console.WriteLine(x);
}
}

class Program
{
static void Main(string[] args)
{
A test = new A();
test.X = 1;
test.printX();
Console.ReadLine();
}
}

执行结果:1

总结:我们可以设置一个属性值来对 private变量 进行赋值,和函数的区别主要在于声明时没有括号,内部由 get set 组成。

类的强制转化-子类到基类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class A {
private int x = 0;
private int y = 0;
public int X {
get {
return x;
}
set {
x = value;
}
}
public virtual void printX() {
Console.WriteLine(x);
}
}
class B :A {
public new void printX() {
Console.WriteLine("I am B!");
}
}

class Program
{
static void Main(string[] args)
{
B test1 = new B();
test1.X = 1;
A test2 = (A)test1;
test2.printX();
Console.ReadLine();
}
}

执行结果:1

总结:子类转化为基类后,变量保留,方法全部为基类方法,包括重写的虚函数。

虚函数的特点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class A {
public virtual void sum() {
Console.WriteLine("I am A!");
}
}
class B : A {
public new void sum() {
Console.WriteLine("I am B!");
}
}
class Program
{
static void Main(string[] args)
{
B test = new B();
test.sum();
Console.ReadLine();
}
}

执行结果:I am B!

总结:可见 virtual 可以使类中的该方法在继承后可重写,即在要重写的函数前加 new 或 override 关键字即可

文章作者: 咲夜南梦
文章链接: http://yoursite.com/2019/01/05/CSharp-%E7%B1%BB/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 咲夜南梦's 博客
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论