当前位置: 首页 > 知识库问答 >
问题:

如何从Java中的继承类生成对象?

沈运恒
2023-03-14

编辑:现在看起来更干净了,反映了我目前的状况和我正在努力实现的目标,并展示了我正在处理的新问题(下面有一个评论解释了我得到了什么)。

public class Main {
class Terrain
{
    private int length, width;
    Terrain(int l, int w)
    {
        length = l;
        width = w;
    }

    public String getTerrainSize()
    {
        return "Land has dimensions " + length + " X " + width;
    }
}
 public class Mountain extends Terrain{
    private int mounts;
    public Mountain(int num, int x, int y) {
//error above: Implicit super constructor Main.Terrain() is undefined. Must explicitly invoke another constructor
//What exactly does this error mean, and how should I fix it?
        mounts = num;
        length = x;
        width = y;
    }
    public String getMountainSize()
    {
        return "Mountains have the dimensions " + length + " X " + width + " with a total of " + mounts + " mountains";
    }
}
  public static void main(String[] args) {
    Terrain T1 = new Terrain(400, 200);
    T1.getTerrainSize();
    Mountain M1 = new Mountain(350, 150);
//error here: The constructor Main.Mountain(int, int) is undefined
//I have a feeling it'll be fixed if I fix the first error, but if not, let me know.
    M1.getMountainSize();
}
}

抱歉,如果帖子有点长,但我希望每个人都能看到整个画面。

共有2个答案

元俊雅
2023-03-14

如果您在方法中访问长度或宽度值。你必须把这个关键字放在长度或宽度之前。

代码:

public class Terrain
{
 private int length, width;
    public Terrain(int l, int w)
    {
        length = l;
        width = w;
    }
    public String getTerrainSize()
    {
        return "Land has dimensions " + this.length + " X " + this.width;
    }
}
public class Mountain extends Terrain{
    private int mounts,length,width;
    public Mountain(int num, int x, int y) {
        mounts = num;
        length = x;
        width = y;
    }
    public String getMountainSize()
    {
        return "Mountains have the dimensions " + this.length + " X " + this.width + " with a total of " + this.mounts + " mountains";
    }
  }```
松洛华
2023-03-14

最后:

public class Main {
static class Terrain
{
    public static int length, width;
    Terrain(int l, int w)
    {
        length = l;
        width = w;
    }

    public String getTerrainSize()
    {
        return "Land has dimensions " + length + " X " + width;
    }
}
 public static class Mountain extends Terrain{
    private int mounts;
    public Mountain(int num, int x, int y) {
      super(length, width);
        mounts = num;
        length = x;
        width = y;
    }
    public String getMountainSize()
    {
        return "Mountains have the dimensions " + length + " X " + width + " with a total of " + mounts + " mountains";
    }
 }
  public static void main(String[] args) {
    Terrain T1 = new Terrain(400, 200);
    System.out.println(T1.getTerrainSize());
    Mountain M1 = new Mountain(8, 350, 150);
    System.out.println(M1.getMountainSize());
}
}
 类似资料:
  • 问题内容: 在PHP / Java中,可以做到: 并且,Super类的所有公共/受保护的方法,属性,字段等都会自动成为Sub类的一部分,如有必要,可以重写这些类。 Javascript中的等效功能是什么? 问题答案: 我已经更改了现在的操作方式,我尝试避免使用构造函数和它们的属性,但是我从2010年起的旧答案仍然是最底层的。我现在更喜欢。适用于所有现代浏览器。 我应该注意,这通常比使用函数构造函数

  • 问题是: 我有一个叫做Schema的基类,它是抽象的,它是一个未生成的类。我有两个从Schema继承生成的JAXB类:FixedWidthSchema和DelimitedSchema。 我使用外部绑定(xjb)文件来指定XSD和Java类之间的映射。 在基类模式中,我定义了几个方法: 公共架构静态创建(Model m),它从提供的模型创建架构。 公共抽象Writer marshal(),它将当前架

  • 我一直在做一个基本的类继承练习,尽管我认为我已经掌握了它的jist,但我的程序并没有按应有的方式工作。我遇到了编译错误,但还没有弄清楚原因——如果你们都能在这里帮助我,那就太好了。 首先,这里有三个文件1。人java——基类2。大学生java——一个派生的Person类。java 3。家庭java——不太确定,我认为它是自己的基类 人java有两个实例变量,String name和int age,

  • 问题内容: 所有自定义类/对象的超类是否隐式继承?我以为Java不支持多重继承。我问的原因是,如果我已经从我的自定义类中的另一个类继承了,并且Java再次在它之上强制隐式继承,这不是多重继承吗? 另外,java.lang.class类还是所有自定义类/对象的超类吗?如果没有,如何在Java反射中获取传递的任何类的类类型,或如何在任何对象上调用isInstance? 问题答案: 一切都是对象,说您可

  • 我试图弄清楚Java中的继承和数组,并试图让这些类一起工作。我相信我已经继承下来了,但我仍在为数组部分而挣扎。 有三个文件: 1. Person.java-基类2. Student.java-派生的Person.java3. Family.java-不太确定,我认为这是它自己的基类 人java有两个实例变量,String name和int age,以及各种各样的构造函数toString、equal

  • 我试图写一个类(SalaryEmployee)和子类(ComissionEmployee),但我没有得到正确的工资,我不能做SE1.SetSalesMount(20000)。我哪里出了问题? 这是主要的: