努力从接口到类调用重载方法

时间:2018-12-04 20:52:40

标签: java class methods interface

所以我可以使用这些方法

authHandler = () => {
  return new Promise ((resolve, reject) => {
    try {
        const authData = {
            email: this.state.controls.email.value,
            password: this.state.controls.password.value
        };
        this.props.onTryAuth(authData, this.state.authMode); // registers a new user and gives a userUID and token
        this.props.onAddUserData(this.state.controls.userName.value)
       resolve('done')
    } //store the username of the new user
    catch(err){
        console.log(err);
        alert("Oops! Something went wrong, please try again")
        reject(err)
    }
  })
};

并且我没有放置参数,因此我可以调用相同的方法2次,但是有些事情不正确,并且无法弄清楚是什么原因

public interface Figura {
    public double poleFigury();
    Object nowyObiekt();
    public double obwódFigury();
}

这是代码的第二部分

2 个答案:

答案 0 :(得分:0)

您已经在界面中定义了没有参数的此方法

public double poleFigury();

但是您可以通过参数来实现

 @Override
public double poleFigury(double a, double b) {
    return 0;
}

您必须在其界面中定义此方法

public double poleFigury(double a, double b);

那么你就有

public interface Figura {
    public double poleFigury();
    public double poleFigury(double a, double b);
    Object nowyObiekt();
    public double obwódFigury();
}

public class Prostokąt implements Figura {
    double a;
    double b;

    public Prostokąt(double a, double b) {
        this.a = a;
        this.b = b;
    }

     @Override
    public double poleFigury() {
        return 0;
    }

    @Override
    public double poleFigury(double a, double b) {
        return 0;
    }

    @Override
    public Object nowyObiekt() {
        Prostokąt nowyProstokąt = new Prostokąt(7.8,8.2);
        return nowyProstokąt;
    }

    @Override
    public double obwódFigury() {
        return 0;
    }
}     

答案 1 :(得分:0)

继承Interfaces的类应该实现或重写Interface的所有方法,这就是为什么它具有@Override的原因。但是,如果Abstract或另一个Interface继承了Interface,则可以继承方法而无需实现或重写。