主题:我想重用基类构造函数,应该怎么做呢
miraclew
[专家分:0] 发布于 2007-05-16 23:34:00
/*
以下程序,烦请大家帮我看一下,相关解释和问题我标注在注释里了
* 不知道我这样表述是否清楚,如有不清楚的地方,欢迎大家给意见
*/
using System;
using System.Collections.Generic;
using System.Text;
namespace MusicManagement
{
public class Base
{
public Base()
{
}
//这个函数,我希望几个派生类都可以重用
public Base(string path, string postfix)
{
/*里面的代码是派生类Sub1,Sub2的构造函数都想使用的,但又
不希望每个派生类都得为此而都再把类似的代码拷贝一遍,
* 我该怎么实现呢?
* */
}
}
public class Sub1 : Base
{
public Sub1()
{
}
[STAThread]
static void Main()
{
/*
此处进行强制类型转换,在运行时会报错,
* 报错强制类型转换失败
*/
Sub1 Sub1 = (Sub1)new Base("a", "b");
Sub2 Sub2 = (Sub2)new Base("a", "b");
}
}
public class Sub2 : Base
{
public Sub2()
{
}
}
}
回复列表 (共10个回复)
沙发
jzyray [专家分:20610] 发布于 2007-05-17 15:01:00
比如:
public Sub2() : base("a", "b"){
}
板凳
hn_lijianguo [专家分:540] 发布于 2007-05-17 15:22:00
[em2]你可以先建立一个类!
class Badir{
public:
....
private:
....
}
就可以了
3 楼
miraclew [专家分:0] 发布于 2007-05-17 22:02:00
[quote]
[em2]你可以先建立一个类!
class Badir{
public:
....
private:
....
}
就可以了[/quote]
不明白你所说的,能够在我的代码上做修改示范一下吗?
4 楼
miraclew [专家分:0] 发布于 2007-05-17 22:03:00
[quote]比如:
public Sub2() : base("a", "b"){
}[/quote]
不明白你所说的,能够在我的代码上做修改示范一下吗?
5 楼
jzyray [专家分:20610] 发布于 2007-05-17 22:30:00
。。。。
我写的就是继承父类构造函数的子类构造函数实现方法~~~~
6 楼
hn_lijianguo [专家分:540] 发布于 2007-05-18 09:43:00
class Basiz
{
....
};
basiz::basiz(...){}
basiz::basiz(..){}
这样就可以了。
7 楼
likangquan [专家分:20] 发布于 2007-05-18 17:32:00
具体的说就是:
public Sub2(参数1,参数2) : base("a", "b")
{
}
8 楼
liangdong007 [专家分:2840] 发布于 2007-05-23 09:02:00
如果你的基类构造函数里面的代码不全是派生类所必须的,可以把派生类所须的代码单独在基类里建一个private 函数,然后,派生类构造函数调用此函数。
9 楼
编程喜好者 [专家分:50] 发布于 2007-05-23 09:37:00
public class sub1:base
{
public sub1(string x,string y)
{
base(x,y);
}
}
或者:
public class sub1:base
{
public sub1(string x,string y):base(x,y)
{
}
}
都可以
10 楼
smywlw [专家分:60] 发布于 2007-05-23 23:54:00
using System;
namespace ConsoleApplication1
{
public class Base
{
public Base()
{
}
//这个函数,我希望几个派生类都可以重用
public Base(string path, string postfix)
{
/*里面的代码是派生类Sub1,Sub2的构造函数都想使用的,但又
不希望每个派生类都得为此而都再把类似的代码拷贝一遍,
* 我该怎么实现呢?
* */
}
}
public class Sub1 : Base
{
public Sub1(string path,string postfix):base(path, postfix)
{
}
[STAThread]
static void Main()
{
/*
此处进行强制类型转换,在运行时会报错,
* 报错强制类型转换失败
*/
Sub1 Sub1 = (Sub1)new Base("a", "b");
Sub2 Sub2 = (Sub2)new Base("a", "b");
//Base b1=new Base();
//Base b2=new Sub1("a","b");
//Base b3=b2;
//Sub1 s1=new Sub1("a","b");
//b2 和s1都先调用Base的带参数的构造函数 然后再调用自己的带参数的构找函数
}
}
public class Sub2 : Base
{
public Sub2(string path,string postfix):base(path,postfix)
{
}
}
}
//在你想得到那样的基础上
//Sub1 Sub2 的构造函数必须要写和Base里面的参数相同 但是构造函数的内容可以不同
我来回复