谁能解释为什么静态属性为null?
class Program
{
static void Main(string[] args)
{
string s = Cc.P1; // is null
}
}
public class Cc
: Ca
{
static Cc()
{
P1 = "Test";
}
}
public abstract class Ca
{
public static string P1
{
get;
protected set;
}
}
参考方案
那是因为在编写Cc.P1
时,实际上是在引用Ca.P1
,因为它是在这里声明的(由于P1
是静态的,所以它不参与多态性)。因此,尽管看起来很漂亮,但是您的代码根本没有使用Cc
类,并且Cc
静态构造函数也没有执行。
我有一个图书馆的jar文件,其中的内容是一堆.class文件spl ├── acm │ ├── graphics │ │ ├── DrawLineElement.class │ │ ├── EndRegionElement.class │ │ ├── FinalPathElement.class │ │ ├── G3DRe…
在抽象类中调用公共静态函数 - php我想这个问题更适合语言爱好者。我有以下课程:<?php abstract class ScopeFactory { public static function doStuff() { } } 现在,我可以像下面这样调用此函数:ScopeFactory::doStuff()这很愉快。我一直以这样的印象编写代码:abstract类不能直接使用-它们必须由…
字段不能是静态的? - java该代码有错误public class DoIt { public static void main(String[] args) { final class Apple { public static String place = "doIt"; } Thread thread = new Thread(new Runnable() { …
子类可以创建抽象的超类类型的对象吗? - java我不确定我是否正确问了这个问题,但我是在作业中给我的ClassA是抽象的B类扩展了A类那么在ClassB的主要方法中,我们有:ClassA obj =新的ClassB();这里发生了什么,这样做的目的是什么? 参考方案 您永远无法创建来自抽象类的对象。曾经期。在这里,被分配了对象的变量是抽象类型,但是变量所指的对象本身不是,也永远不可能是。引用和引用变量之间…
Java:静态字段在内存中的哪个位置? - java如果我们将对象存储在对象的静态字段中,那么JVM如何为它分配内存?它是否存在于“隐式”(不确定我是否使用正确的单词)类对象中?静态字段与对象字段有何不同? 参考方案 静态字段是类变量,并且在该类的所有实例之间共享。实例变量(或我认为您引用它们的对象字段)属于类的各个实例,并且不共享。至于它们存储在内存中的位置将根据JVM的实现而定,因此没有理由需要两个不同的…