有没有办法:实例化一个子类的时候,即调用重载的构造函数(有参数),又调用自己的默认的构造函数(无参数

Almzg_0 2006-10-23 10:57:22
有没有办法:实例化一个子类的时候,即调用重载的构造函数(有参数),又调用自己的默认的构造函数(无参数)。
=========================
public class Class1
{
public Class1()
{
dosth();
}
public Class1(string s) : this()
{
dosthwith(s);
}
public void dosth()
{
Console.WriteLine(this.GetType().ToString());
}
protected void dosthwith(string s)
{
Console.WriteLine(s);
}

}

public class SubClass1 : Class1
{
public SubClass1() : base()
{
dosthwith_SubClass();
}

public SubClass1(string s)
: base(s)
{
Console.WriteLine(this.GetType().ToString());
}

private void dosthwith_SubClass()
{
Console.WriteLine("dosthwith_SubClass");
}

}

public class TestClass
{
public TestClass()
{
new SubClass1("x");//我还想调用SubClass1 的默认构造函数,怎么写?
}

}
...全文
215 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Almzg_0 2006-10-23
  • 打赏
  • 举报
回复
如果把构造函数里的方法合并在一起的话,我就不会来问这个问题了:)
micher_yan 2006-10-23
  • 打赏
  • 举报
回复
public class TestClass
{
public TestClass()
{
new SubClass1("x");//有参数构造函数
new SubClass1();//无参数构造函数
}
}
构造函数其实想简单点,它就是一个函数而已,你想调用哪个构造,根据你的需要(后者说创建对象的条件,)定,构造函数并不存在默认构造函数的说法,不同的构造函数通过不同的方式实现同一个类,注意是同一个类,继承类首先应该做的是实现基类,其次才是实现额外的东东
feiyun0112 2006-10-23
  • 打赏
  • 举报
回复
不太明白你的意思,是不是这样
public SubClass1()
: base("X")
{
dosthwith_SubClass();
}


*****************************************************************************
欢迎使用CSDN论坛阅读器 : CSDN Reader(附全部源代码)
http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
whq1982 2006-10-23
  • 打赏
  • 举报
回复
看错了,上面的不对
whq1982 2006-10-23
  • 打赏
  • 举报
回复
Class1 c1 = new SubClass1("ss");
JasonHeung 2006-10-23
  • 打赏
  • 举报
回复
//应该这么写:
public class SubClass1 : Class1
{
public SubClass1() : this("")
{
}

public SubClass1(string s)
: base(s)
{
dosthwith_SubClass();
Console.WriteLine(this.GetType().ToString());
}

private void dosthwith_SubClass()
{
Console.WriteLine("dosthwith_SubClass");
}

}
chenhui530 2006-10-23
  • 打赏
  • 举报
回复
在你类中的构造中再调用重载的构造函数就OK了啊
anuo06 2006-10-23
  • 打赏
  • 举报
回复
这个问题嘛,先顶一下!!!楼下的给解决吧
Knight94 2006-10-23
  • 打赏
  • 举报
回复
不太明白你要干什么,TestClass与SubClass没有直接关系。

按照大致理解,主要是你的SubClass组织的不合理,比较合理的写法,应该如下:
public class SubClass : Class1
{
public SubClass() : this( null )
{
}

public SubClass1(string s)
: base(s)
{
if( s == null )
{
//process here
}
else
Console.WriteLine(this.GetType().ToString());
}

private void dosthwith_SubClass()
{
Console.WriteLine("dosthwith_SubClass");
}

}

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧