gpt4 book ai didi

java - 从抽象中看到实现细节

转载 作者:行者123 更新时间:2023-11-30 06:35:06 26 4
gpt4 key购买 nike

抽象的基本定义是隐藏方法的实现复杂性并显示功能。尽管在使用代码时(当我使用 eclipse 时),可以选择打开抽象方法的实现。

例如:-

我试图打开 BufferedReader 的实现,能够看到许多实现。

那么当我们能够看到实现时,我们如何隐藏复杂性。

我在概念上哪里出了问题?

最佳答案

抽象并不意味着在物理上向您隐藏实现细节。除非您有眼睛,否则您仍然会看到已实现的抽象方法的所有实现线。抽象意味着对如何在代码中使用该方法隐藏实现细节。

假设您正在编写近似函数导数的类。属于哪个功能?如果您将函数视为抽象,那并不重要。您不关心该功能是什么。您只需定义如何实现该功能的一些基本原则。它应该采用 double 值并且应该返回 double 值。

这个概念向您和类的设计者隐藏了函数实现的复杂性。您现在可以继续实现您的部分工作。您可以编写以下类:

public abstract class DerivativeApprox {

abstract double func(double x);

double eps = 0.0;

DerivativeApprox(double eps){
this.eps = eps;
}

public double eval(double xPoint){
return (func(xPoint + eps) - func(xPoint - eps)) / (2 * eps);
}
}

现在任何人都可以通过以下方式使用您的类(负责实现他们想要估计导数的任何特定函数)

public static void main(String[] args) {

DerivativeApprox cosDerApprox = new DerivativeApprox(0.0001) {
@Override
double func(double x) {
return Math.cos(x);
}
};

DerivativeApprox sinDerApprox = new DerivativeApprox(0.0001) {
@Override
double func(double x) {
return Math.sin(x);
}
};

System.out.println("Cos'(pi) = " + cosDerApprox.eval(Math.PI));
System.out.println("Cos'(pi/2) = " + cosDerApprox.eval(Math.PI / 2));

System.out.println("Sin'(pi) = " + sinDerApprox.eval(Math.PI));
System.out.println("Sin'(pi/2) = " + sinDerApprox.eval(Math.PI / 2));

}

希望这个解释能够帮助你们继续OOP的学习。

关于java - 从抽象中看到实现细节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45333174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com