我需要构建一个表示文件中类的继承图的数据结构。这是为只支持单一继承的语言编写编译器的一部分。
出现的所有类的名称都存储在链接列表中。我需要遍历这个列表并从中构建一个继承图。然后,我需要检查继承中是否存在循环,例如
B inherits A
C inherits B
然后
A cannot inherit C.
这种循环在语言中是不允许的。
什么样的数据结构最适合这样做?
我目前正在为java编写一个编译器。JLS说“类层次结构必须是非循环的”。但是如果是这样的情况呢:
B extends A
C extends A
D extends B
D extends C
这是一个无环图,但无效,我如何检测这种情况?我目前使用的是BFS,每当我看到后缘时,我就知道有一个循环,但BFS算法无法检测到上面提到的情况。
我是Openlink Virtuoso的新手。我想做一些基于if- And语句的推理规则,比如,
if (B is fatherof C & A is fatherof B) then (A is grandfatherof C).
根据,Virtuoso可以使用本体(图)来推断RDF。Virtuoso能否使用if-h语句推理规则?
谢谢!
我有一个名为ServerSide的类,其中有另一个名为Cserver的类。下面的代码片段应该可以解释我所说的内容:
public static void main (String [] args) throws Exception
{
System.out.println("The server is running.");
int clientnumber = 1;
ServerSocket server = new ServerSocket(9090);
try
{
while (true)
{
我有以下代码:
trait A {
fn foo(&self);
}
trait B {
fn bar(&self);
}
trait C : A + B {
}
struct S;
impl A for S {
fn foo(&self) {
println!("In S->foo()");
}
}
impl B for S {
fn bar(&self) {
println!("In S->bar()");
}
}
impl
在一些调用者知道其值而另一些调用者不知道的情况下,处理空白final变量的最佳方法是什么?
在下面的场景中,我应该创建一个新的子类来实例化c2吗?
class Parent {
private int p1;
private int p2;
}
class Child1 extends Parent {
private final int c1;
//want to add a final variable c2 here but cannot add since one of the callers do not the know the value of c2
我有以下代码:
#include <iostream>
class Grandma
{
public:
virtual void foo() = 0;
};
class Mom : public Grandma{};
class Dad
{
public:
void foo() { std::cout << "dad's foo impl"; }
};
class Me : public Mom, public Dad{};
int main()
{
Me m;
m.foo();
}
并得到:cannot
我教C++,我需要一个好的、简单的、日常的例子来说明您什么时候使用这个:
class A {...};
class B : public A {...};
class C : public A {...};
class D : public B, public C {...};
这里D继承A两次,因为不涉及虚拟继承。
我需要一个简单易懂的例子,说明你什么时候可能需要这个结构。我甚至不需要代码;我只需要能给我的学生举个例子,他们就会惊呼:“是的,我能看出那是有用的!”
我知道在C++中支持私有继承,而在C#中只支持公共继承。我还读到了一篇文章,它说私有继承通常定义了类之间的HAS-A关系和某种聚合关系。
编辑:私有继承的C++代码:"Car has-a Engine“关系也可以使用私有继承表示:
class Engine {
public:
Engine(int numCylinders);
void start(); // Starts this Engine
};
class Car : private Engine { // Car has-a Engine
public:
Car
我想知道Java中是否有一个语言特性,在这个特性中,超类的方法对子类的成员是不可见的:
public class Subclass extends protected Superclass
或者别的什么。我来举个例子。
这是您的超类。
public class A{
public String getA(){...}
public String getB(){...}
public String getC(){...}
public void setA(String a){...}
public void setB(String b){...}