基本Java继承
我有一个关于继承的问题。目前,我正在制作一个简单的程序,在使用forge修改Minecraft时,重新执行制作自定义块的过程 我有超级类基本Java继承,java,inheritance,Java,Inheritance,我有一个关于继承的问题。目前,我正在制作一个简单的程序,在使用forge修改Minecraft时,重新执行制作自定义块的过程 我有超级类块: public class Block { public String name; public int id; public int height = 16; public Block(int id) { this.id = id; } public String getName() {
块
:
public class Block {
public String name;
public int id;
public int height = 16;
public Block(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void onRightClick() {
System.out.println("You Right Clicked!");
}
public void setUnlocalizedName(String name) {
this.name = name;
}
}
this.setUnlocalizedName("DirtBlock");
然后我做了两个儿童班。它们是相同的,但这里有一个仅供参考
package com.andrewfurniss;
public class GrassBlock extends Block {
public GrassBlock(int id) {
super(id);
this.setUnlocalizedName("DirtBlock");
}
}
另一个类称为DirtBlock
。当我打印出名字时,它只打印出我第二次声明的名字。为什么会这样?也许你在做:
public void ToDo(){
Block b = new GrassBlock(0);
b = new DirtBlock(1);
System.out.println(b.getName());
}
???
我们需要你用来打印的代码然后是你的名字
我编辑,你为什么在grassblock上写“dirtblock”??可能是这样。这是因为您在
GrassBlock
中设置了错误的名称:
public class Block {
public String name;
public int id;
public int height = 16;
public Block(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void onRightClick() {
System.out.println("You Right Clicked!");
}
public void setUnlocalizedName(String name) {
this.name = name;
}
}
this.setUnlocalizedName("DirtBlock");
可能是复制粘贴错误。你能把“当我打印姓名时”的代码贴出来吗?对不起,我不清楚你在问什么。你说的
“它只打印出我第二次声明的任何名称…”是什么意思?我看到您只声明了一次名称字段。作为一个旁注,我将使所有字段都是私有的,而不是公共的,并且会考虑创建可以获取ID和名称的构造函数,然后通过超级构造函数调用来设置名称。输出是什么?为什么这不是意外的?您在超类中有一个名称的getter,但名称是公共的。公开所有字段可能是不好的做法。在超类中,通常将它们设置为私有或受保护(对于继承行为私有)。