相关疑难解决方法(0)

C++与Java的多态性

我正在将一些Java代码转换为C++,我希望保持类结构类似.但是,我遇到了以下问题,我不知道如何解决; 我在Java中这样做:

public class Mother {   
    protected Father make;  
    public  Mother(){       
        make = maker();         
        make.print(); };    
    public Father maker(){ 
        return new Father();};}

public class Daughter extends Mother {
    public Daughter(){
        super();}
    @Override
    public Father maker(){
        return new Son();};}

public class Father {
    public void print(){
        System.out.println("I am the Father!\n");}}

public class Son extends Father {
    @Override
    public void print(){
        System.out.println("I am the son!\n");};}

public static void main(String[] args) {
    Daughter dot  = new Daughter();
}
Run Code Online (Sandbox Code Playgroud)

会产生:我是儿子! 而:

class father{ …
Run Code Online (Sandbox Code Playgroud)

c++ java polymorphism factory

1
推荐指数
1
解决办法
1631
查看次数

Java:当我实例化抽象类的子类时,它无法识别其超类的构造函数

我没有很多Java经验,但我看到代码中有一个带有某个构造函数的抽象类,然后是没有构造函数的抽象类的子类.然后,当实例化子类时,它使用其超类构造函数构造.是对的吗?

我有这个抽象类:

public abstract class Tile{

    public int x;
    public int y;
    public int z;

    protected Color color;
    protected float friction;
    protected float bounce;
    protected boolean liquid;

    public void Tile(int x, int y, int z){
        this.x = x;
        this.y = y;
        this.z = z;
        init();
    }
    abstract protected void init();
Run Code Online (Sandbox Code Playgroud)

而这个子类:

public class TestTile extends Tile{
    protected void init(){
        color = Color.RED;
        friction = 0.1f;
        bounce = 0.2f;
        liquid = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我用这个实例化一个TestTile时:

Tile tile = new TestTile(0, 0, …
Run Code Online (Sandbox Code Playgroud)

java constructor class subclass abstract

0
推荐指数
1
解决办法
3381
查看次数

pmd规则在对象构造期间调用的可覆盖方法

我正在构造函数中通过setter在我的DTO中初始化一些成员变量.

但是下面的pmd错误显示如何消除pmd规则违规?

在对象构造期间调用的重写方法'setAbc'

class A{

private String x;

public getX(){
return x;
}
public setX(String x){
this.x = x ;
}
A(){}

A(B b){
setX("C");
}
Run Code Online (Sandbox Code Playgroud)

}

java pmd

0
推荐指数
1
解决办法
3837
查看次数

继承,超级()的NullPointerException概念

基类:

public class Base {
    private String baseMessage = "Hello!";

    public Base() {
        printMessage();
    }

    public void printMessage() {
        System.out.println(baseMessage.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

派生类:

public class Derived extends Base {
    private String derivedMessage = "World!";

    public Derived () {
        super();

    }

    @Override
    public void printMessage() {
        super.printMessage();
        System.out.println(derivedMessage.toString());
    }


    public static void main(String[] args) {
//      new Base();
        new Derived();
    }
}
Run Code Online (Sandbox Code Playgroud)

我跑的时候

new Base();
Run Code Online (Sandbox Code Playgroud)

我得到了预期的输出:

Hello!
Run Code Online (Sandbox Code Playgroud)

当我跑

new Derived();
Run Code Online (Sandbox Code Playgroud)

我明白了

Hello!
Hello!
Run Code Online (Sandbox Code Playgroud)

然后是NullPointerException.这对我来说似乎有点奇怪.我不知道为什么它打印出来然后抛出一个nullpointerexception,而不是直接抛出它.也许是Eclipse,我不知道.

这里的基本概念是什么?

java inheritance

0
推荐指数
1
解决办法
353
查看次数

私有变量突然为空

假设我们有一个类:

public class MyClass extends AbstractClass {

    private AnotherObject ao = null;

    public MyClass() {
        super();
    }

    @Override
    protected void init() {
        ao = new AnotherObject();
        if (ao != null) {
            log.info("NOT NULL");
        }
    }

    @Override
    protected void doSomething() {
        if (ao == null) {
            log.info("It is NULL.");
        }
        ao.doIt(); //NullPointerException here
    }
}
Run Code Online (Sandbox Code Playgroud)

以及相应的抽象类:

public class AbstractClass implements Runnable {
    Thread myThread = null;
    
    AbstractClass () {
        init();
        myThread = new Thread(this, "ThreadName");
        myThread.start();
    }

    public void run() { …
Run Code Online (Sandbox Code Playgroud)

java

-1
推荐指数
1
解决办法
127
查看次数

标签 统计

java ×5

abstract ×1

c++ ×1

class ×1

constructor ×1

factory ×1

inheritance ×1

pmd ×1

polymorphism ×1

subclass ×1