Java 实现类的两种方法

Java 实现类的两种方法,java,class,implements,Java,Class,Implements,当我想要实现一个类时,我不知道两种类型的使用之间有什么真正的区别:(我运行并看到它们是相同的结果) 第一个示例:将渲染器直接实现到类 第二个示例:创建一个子类并使该类实现Renderer 我在网上阅读文件/电子书时经常遇到的第二个问题。也许解决方案2还有一些我不知道的好处 GLSurfaceView glView; public class TriangleOpenGLTest implements Renderer{ public void onCreate(Bundle save

当我想要实现一个类时,我不知道两种类型的使用之间有什么真正的区别:(我运行并看到它们是相同的结果)

第一个示例:将
渲染器直接实现到类

第二个示例:创建一个子类并使该类实现
Renderer

我在网上阅读文件/电子书时经常遇到的第二个问题。也许解决方案2还有一些我不知道的好处

GLSurfaceView glView;

public class TriangleOpenGLTest implements Renderer{

    public void onCreate(Bundle savedInstanceState){

        glView = new GLSurfaceView(this);
        glView.setRenderer(this);   //this line

    }

}
以及:

请教我


谢谢:)

这两种方法都不错,但我更喜欢第二种方法。为什么?

我认为这更清楚。这样,您就可以清楚地将渲染器接口的特定业务代码与TrianglePongltest的其他业务代码分开


很容易区分什么是特定于TriangeloPenglTest的,什么是特定于渲染实现的。

这两种方法都很好,但我更喜欢第二种方法。为什么?

我认为这更清楚。这样,您就可以清楚地将渲染器接口的特定业务代码与TrianglePongltest的其他业务代码分开


很容易区分什么是特定于TriangeloPenglTest的,什么是特定于呈现的实现的。

您应该努力实现高内聚性-一个类应该完成一项工作(或多或少)

如果一个类实现了一个接口,那么该接口就是该类API的一部分(例如,它在其Javadoc中显示该类实现了该接口)。因此,您应该问问自己,例如,该类是否真的是一个渲染器,并打算在任何可以使用渲染器的地方使用?或者它只是一个实现细节


如果只是一个实现细节,那么最好使用另一个类(例如,本地内部类或甚至匿名类),而不是在API中泄漏接口。

您应该努力实现高内聚性-一个类应该完成一项工作(或多或少)

如果一个类实现了一个接口,那么该接口就是该类API的一部分(例如,它在其Javadoc中显示该类实现了该接口)。因此,您应该问问自己,例如,该类是否真的是一个渲染器,并打算在任何可以使用渲染器的地方使用?或者它只是一个实现细节


如果只是一个实现细节,那么最好使用另一个类(例如,本地内部类或甚至匿名类),而不是在API中泄漏接口。

注意:在第二个示例中,TrianglePongltest不必实现渲染器。术语是“实现”(通常在接口的情况下)或“覆盖”(通常在基类的情况下),而不是“重载”,这是另一个概念。我很抱歉。我的意思是
覆盖
。谢谢:)注意:在第二个示例中,TrianglePongltest不必实现渲染器。术语是“实现”(通常在接口的情况下)或“覆盖”(通常在基类的情况下),而不是“重载”,这是另一个概念。我很抱歉。我的意思是
覆盖
。谢谢:)
GLSurfaceView glView;

public class TriangleOpenGLTest implements Renderer{

    public void onCreate(Bundle savedInstanceState){

        glView = new GLSurfaceView(this);
        glView.setRenderer(new Render() );     //And this line

    }

    class Render() implements Renderer{
           //Override function here 

}