类A
public class A
{
public A(int x)
{
init()
}
pulbic void init()
{
...
}
}
//类B,继承A,调用父类构造函数
public class B : A
{
int a;
public B(int x):base(x)
{
a=1;
}
}
这样的话是否是先执行base(x)即父类的构造函数里的,再执行a=1;
但现在我想 先执行a=1,而后在执行base(x)里的方法,应该怎么写?
public class A
{
public A(int x)
{
init()
}
pulbic void init()
{
...
}
}
//类B,继承A,调用父类构造函数
public class B : A
{
int a;
public B(int x):base(x)
{
a=1;
}
}
这样的话是否是先执行base(x)即父类的构造函数里的,再执行a=1;
但现在我想 先执行a=1,而后在执行base(x)里的方法,应该怎么写?
解决方案 »
- c#,大家有没有试过在winform程序里同时使用app.config文件和web.config文件?
- 现在.NET开发向哪个方向发展比较好,比如网络或者通信什么的
- 有人做过条形码读取分析的程序吗?
- 程序在进程里不停止
- 如何得到程序集的全名
- 知道了怎么改SharpZipLib使其支持中文, 如何将其重编译?
- 我在报表页脚里控制子报表的显示: 设了这个条件 if Length({gps4.id})>=1 then true else false 可是没有用,如果
- 刚装上了CS2.1并升级到了ASP.NET2.0, 出现一个"正在中止线程"的错误???
- 用C#做工业控制,控制IO卡,行的通吗?
- 问一个简单的窗体关闭的问题啊
- 难题!通过IE控制客户端,可行吗?
- 关于.NET连接oracle的问题?!请教高手!
public class B : A
{
int a = 1;
public B(int x):base(x)
{
//a=1;
}
}
但现在我想 先执行a=1,而后在执行base(x)里的方法,应该怎么写?为什么会有这样奇怪的想法,难道你的基类要做什么不寻常的处理吗。
我觉得楼主应该直接描述想达成的效果,不该钻牛角尖 也许有更自然的做法呢 恩 这个倒是有可能 我等下再贴一下详细的代码 你看看
public class B : A
{
protected override void Init()
{
//先改A的变量
base.Init(); //调用A的Init,完成!
}
}
public class A
{
private int m;
private int sum
public A(int x)
{
m=x;
init()
}
pulbic void init()
{
sum=m+m;
...
}
public int M
{
get
{
return m
}
set
{
m
}
}
}
//类B,继承A,调用父类构造函数
public class B : A
{
public B(int x):base(x)
{
//改变m的值
M=x*2;
init(); //这些写的话 结果没错 但是 重复执行了 init(),如果不写则达不到计算的效果;
}}
pulbic void init()改成
public virtual void Init()然后子类override
//类B,继承A,调用父类构造函数
public class B : A
{
public B(int x):base(x)
{
}
public override void Init()
{
//改变m的值
base.M=x*2;
base.Init();
}}
base.M = base.M * 2;
public override void Init(int x)
{
//改变m的值
base.M=x*2;
base.Init();
}
public A(int x)
{
m=x;
init()
}
pulbic void init()
{
sum=m+m;
...
}
改为
public A(int x)
{
init(x);
}
pulbic virtual void init(int x)
{
m = x;
sum=m+m;
...
}
但你已经把x保存在m里了,你的子类为什么不直接用m?
不管遇到多少困难,你再按照这个思路细分那些方法的职能,总能找到子类可以扩展基类的最佳方式。
,因为我后面的每个子类都要以不同的形式改变m值。
方法是可行的 但是init必须带上一个无用的参数 所以 我才怀疑是否有更好的方法,是否可以改变构造函数的初始化顺序还是非常感谢 Ninputer(装配脑袋) 如此耐心 :)
所以我怀疑Java是不是也是这样