学习C#过程中一个关于继承的问题理解!
using System;
namespace MyShape
{
public class Rectangle:Shape
{
protected int a;
protected int b;
public Rectangle(int va, int vb)
{
a = va;
b = vb;
} } public class Square : Rectangle
{
public Square(int va)
: base(va, va)
{
;
}
}
}这两个类之间的继承问题如下:
public Square(int va)
: base(va, va)
{
;
}
这样写为什么只有一个分号?其他语句都可以略写吗?既然是构造函数 为什么没有定义域?难道这样可以继承吗?
using System;
namespace MyShape
{
public class Triangle:Shape
{
int a;
int b;
int c;
public Triangle(int va, int vb, int vc)
{
a = va;
b = vb;
c = vc;
}
} public class RecTriange : Triangle
{
new protected int a;
new protected int b;
public RecTriange(int va, int vb)
: base(va, vb, (int)(Math.Sqrt(va * va + vb * vb)))
{
a = va;
b = vb;
}
} public class RectEqualTriangle : RecTriange
{
new protected int a;
public RectEqualTriangle(int va)
: base(va, va)
{
a = va;
}
}
}
类RecTriange 继承 Triangle类
在类中
public RecTriange(int va, int vb)
{
a = va;
b = vb;
}
这样就可以构造函数了 为什么要继承非要写成
public RecTriange(int va, int vb)
: base(va, vb, (int)(Math.Sqrt(va * va + vb * vb)))
{
a = va;
b = vb;
}
有必要吗?请按顺序解释 谢谢
public Square(int va)
: base(va, va)
{
;
}
这样写为什么只有一个分号?其他语句都可以略写吗?既然是构造函数 为什么没有定义域?难道这样可以继承吗?为什么只有一个分号 请问MS其他语句你指的是?为什么没有定义域----是在类的内部声明,这是C# 不是C++base(va, va) -- 是你继承的基类的构造
这样就可以构造函数了 为什么要继承非要写成
public RecTriange(int va, int vb)
: base(va, vb, (int)(Math.Sqrt(va * va + vb * vb)))
{
a = va;
b = vb;
}
有必要吗? ----- 也不一定要写成这样,看你的需求了
new protected int b;
你隐藏了基类的a,b