我一直在考虑CLR如何创建新实例。请考虑以下代码:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/media/opengl/GLProfile
at org.jzy3d.chart.Settings.<init>(Settings.java:19)
at org.jzy3d.chart.Settings.getInstance(Settings.java:48)
at org.jzy3d.analysis.AnalysisLauncher.open(AnalysisLauncher.java:18)
at org.jzy3d.analysis.AnalysisLauncher.open(AnalysisLauncher.java:13)
at org.jzy3d.demos.scatter.ScatterDemo.main(ScatterDemo.java:16)
Caused by: java.lang.ClassNotFoundException: javax.media.opengl.GLProfile
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 5 more
Java Result: 1
这是我的问题:
每次为这行代码public class Base
{
public Base()
{ }
}
public class Derived : Base
{
public Derived()
: base()
{ }
}
创建System.Object
实例?内存中有多少个实例?是2还是1?
对于以下代码行:var baseObj = new Base();
。将创建多少个实例?是3还是2?
答案 0 :(得分:3)
在两个样本中,只有一个对象。只分配了一块内存,并且基类&#39;合并&#39;与父母一起只有一个类包含从基类派生的所有方法,字段和属性,包括base-class-of-all。 object
。
如果var derivedObj = new Derived();
创建两个实例,您认为会发生什么?如何引用未分配给baseObj
的那个?保持两个类的实例是活着的没有用处。只有一个人会这样做。