gpt4 book ai didi

java - LibGDX 类似乎没有调用父类(super class)构造函数,这怎么可能?

转载 作者:行者123 更新时间:2023-11-29 04:21:02 25 4
gpt4 key购买 nike

我想扩展内置的 libgdx 类 GLFrameBuffer 但不明白我应该为构造函数编写什么。

GLFrameBuffer 已经有另一个子类 FrameBuffer,它使用以下构造函数,最后一个是混淆的主题。

FrameBuffer () {}

protected FrameBuffer (GLFrameBufferBuilder<? extends GLFrameBuffer<Texture>> bufferBuilder) {
super(bufferBuilder);
}

public FrameBuffer (Pixmap.Format format, int width, int height, boolean hasDepth) {
this(format, width, height, hasDepth, false);
}
public FrameBuffer (Pixmap.Format format, int width, int height, boolean hasDepth, boolean hasStencil) {
FrameBufferBuilder frameBufferBuilder = new FrameBufferBuilder(width, height);
frameBufferBuilder.addBasicColorTextureAttachment(format);
if (hasDepth) frameBufferBuilder.addBasicDepthRenderBuffer();
if (hasStencil) frameBufferBuilder.addBasicStencilRenderBuffer();
this.bufferBuilder = frameBufferBuilder;

build();
}

请注意,没有调用父类(super class)构造函数,并且它的父类(super class)没有(可见的)无参数构造函数。为什么这是允许的?这两个类都有没有代码的私有(private)无参数构造函数。如果我完全复制 FrameBuffer 类并重命名它,我会收到一条消息说我必须显式调用另一个构造函数。

编辑:libgdx 版本 1.9.8

最佳答案

你所说的私有(private)构造函数实际上并不是私有(private)的。

它们是默认构造函数,它们的可见性级别是default 而不是private。这是在您未指定访问修饰符(因此名称为 default)时应用的访问修饰符

在 java 中,任何具有默认访问修饰符的东西都可以被同一包中的其他类访问。​​

并且这些类都在同一个包中,com.badlogic.gdx.graphics.glutils

FrameBuffer () 构造函数实际上是在调用它的无参数 super 构造函数。

关于java - LibGDX 类似乎没有调用父类(super class)构造函数,这怎么可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49180008/

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