日期:2014-05-19  浏览次数:20935 次

[肯定有错] 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;}

}

这样编译不会错。但想想也不知道是什么意思,也不知道接下来该怎么用?
------解决方案--------------------
既是静态的又是多态的这本身就是矛盾。
更改设计吧。
------解决方案--------------------
说说你要做什么……
------解决方案--------------------
咋不结帖呢!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!