[肯定有错] abstract static string strName{get;set;}
一个抽象类里面要这么定义:
public abstract static string strName{get;set;}
肯定是会报错的。(错误: 静态成员“ConsoleApplication2.Base.strName”不能标记为 override、virtual 或 abstract...)
要想派生类必须实现(要有)静态的strName属性...。。怎么办?
------解决方案--------------------类似,如果可以
abstract class a{
public abstract static string name{ get ; }
}
public class b:a
{
实现 name ...
}
一个最简单的多态
a a1 = new b();
a.name 如何确定是 是a class 还是 b class 的 name ????
------解决方案--------------------学习OO。
------解决方案--------------------这种办法肯定是不行的。
楼主要知道abstract 和 static内在含义就会明白了
static是在类实例化之前会先被实例化,而abstract 却又是不能被实例化的。。。比较矛盾,所以一定通不过的说
------解决方案--------------------看不太懂,帮顶
------解决方案--------------------静态成员是类及其子类共享的,正如static在VB中是Shared,静态成员可以通过类名来访问,如果静态成员允许是抽象的,那通过父类名访问它时 ,它去找谁呢?
------解决方案--------------------静态成员相当于一个全局变量,如何由子类实现?????????
------解决方案--------------------楼住
静态成员不能为虚的
别的在学习
------解决方案--------------------说的还不明白?静态成员是不能被声明为虚的,不论是abstract virtual...还是override.
如果要想实现你的这个静态属性难度比较大。
------解决方案--------------------子类一定要实现父类的抽象方法吗?如果不是,即使你定义了又有什么意义呢?
在子类中写个静态变量不就得了
------解决方案--------------------我突然想通了,不写成抽象的不就直接继承过去了?
------解决方案--------------------不用静态的!
------解决方案--------------------用组合吧,
------解决方案--------------------hehe,学习OO
------解决方案--------------------静态怎么能虚!
看看需求,是不是可以套某种模式来解决。
------解决方案--------------------比如将Name单独做一个类,实现单一对象模式
------解决方案--------------------我认为Interface Properties比较合适
http://msdn2.microsoft.com/en-us/library/64syzecx(VS.80).aspx
------解决方案--------------------有点自相矛盾的感觉,你要静态是为了要在使用过程中让它有唯一性,又要放在虚类里面,虚类是为了各个子类有自己不同的属性值。。。。有这样的需求吗?
------解决方案--------------------//这个类只会有一个实例,使用的时候用st.s
public class st
{
public static st s=new st();
private st(){}
}
public abstract class myc
{
public abstract st strName { get;set;}
}
这样编译不会错。但想想也不知道是什么意思,也不知道接下来该怎么用?
------解决方案--------------------既是静态的又是多态的这本身就是矛盾。
更改设计吧。
------解决方案--------------------说说你要做什么……
------解决方案--------------------咋不结帖呢!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!