创建继承class并从父class数组中打印出数据
Create inheritance class and print out data from the parent class array
所以我必须创建一个 class 和获取用户输入的方法以及一个打印它们的方法
在我打印出数字之后。我应该继承 class 并打印出相同的数字,但带有它们的索引,
我如何从第一个 class 获取数字数据?
public class Main {
public static void main(String[] args) {
// write your code here
OriginalMethod firstoutput = new OriginalMethod();
firstoutput.OriginalMethod();
firstoutput.out();
overki newki = new overki();
newki.out();
}
static class OriginalMethod {
public int []tomb = new int[3];
public void OriginalMethod(){
for(int i = 0; i<3;i++)
{
Scanner beolvas = new Scanner(System.in);
System.out.println("Enter the "+(i+1)+".number");
tomb[i] = beolvas.nextInt();
}
}
public void out()
{
for(int i = 0; i<3;i++)
{
System.out.print(tomb[i]+" ");
}
}
}
static class overki extends OriginalMethod {
@Override
public void out()
{
System.out.println();
for(int i = 0; i<3;i++)
{
System.out.println(i+". "+tomb[i]);
}
}
}
}
我认为您混淆了 class 和实例(对象)的概念。
看来您只需要一个实例 - subclass。
overki newki = new overki();
newki.OriginalMethod();
newki.out();
newki.out();
看起来方法 OriginalMethod
应该是一个构造函数 - 虚假的 void
是一个常见的错误。所以改变:
public void OriginalMethod(){
至:
public OriginalMethod() {
并删除行:
newki.OriginalMethod();
这并不是我在 Java 中学习编写 classes 的真正方式(我学会了在项目包中创建新的 Java classes 而不是直接在 Main Class 中创建许多 classes。这将允许您创建构造函数,然后使用 super 关键字或什至通过某些 [= 轻松传递变量31=]getter-setters。但是,对于您提供的代码,我找到的最简单的解决方案是:
public class Main {
public static void main(String[] args) {
int[]tomb;
OriginalMethod firstoutput = new OriginalMethod();
tomb = firstoutput.OriginalMethod();
firstoutput.out(tomb);
overki newki = new overki();
newki.out(tomb);
}
static class OriginalMethod {
public int[] OriginalMethod(){
int []tomb = new int[3];
for(int i = 0; i<3;i++)
{
Scanner beolvas = new Scanner(System.in);
System.out.println("Enter the "+(i+1)+".number");
tomb[i] = beolvas.nextInt();
}
return tomb;
}
public void out(int[]tomb)
{
for(int i = 0; i<3;i++)
{
System.out.print(tomb[i]+" ");
}
}
}
static class overki extends OriginalMethod {
@Override
public void out(int[]tomb)
{
System.out.println();
for(int i = 0; i<3;i++)
{
System.out.println(i+". "+tomb[i]);
}
}
}
}
请允许我解释一下我所做的更改。首先,我将 int[]tomb
变量移出 OriginalMethod
class 并移入 Main。然后,我将 OriginalMethod
更改为 return 一个 int 数组。因此,您可以通过编写 tomb = firstoutput.OriginalMethod()
轻松地将您的数组从 OriginalMethod
中“导出”。从那里,您只需更改 out
方法,以便它们都接收我们在 Main 中创建的数组(因为第二个 out()
方法是 覆盖,绝对有必要他们都收到相同的 参数中的东西)。
好吧,它成功了。现在,它是完美的吗?可能不会。正如我所说,如果我自己这样做,我可能会使用 getter-setters,但是从您的原始代码开始,这是我找到的最简单的解决方案!
所以我必须创建一个 class 和获取用户输入的方法以及一个打印它们的方法
在我打印出数字之后。我应该继承 class 并打印出相同的数字,但带有它们的索引, 我如何从第一个 class 获取数字数据?
public class Main {
public static void main(String[] args) {
// write your code here
OriginalMethod firstoutput = new OriginalMethod();
firstoutput.OriginalMethod();
firstoutput.out();
overki newki = new overki();
newki.out();
}
static class OriginalMethod {
public int []tomb = new int[3];
public void OriginalMethod(){
for(int i = 0; i<3;i++)
{
Scanner beolvas = new Scanner(System.in);
System.out.println("Enter the "+(i+1)+".number");
tomb[i] = beolvas.nextInt();
}
}
public void out()
{
for(int i = 0; i<3;i++)
{
System.out.print(tomb[i]+" ");
}
}
}
static class overki extends OriginalMethod {
@Override
public void out()
{
System.out.println();
for(int i = 0; i<3;i++)
{
System.out.println(i+". "+tomb[i]);
}
}
}
}
我认为您混淆了 class 和实例(对象)的概念。
看来您只需要一个实例 - subclass。
overki newki = new overki();
newki.OriginalMethod();
newki.out();
newki.out();
看起来方法 OriginalMethod
应该是一个构造函数 - 虚假的 void
是一个常见的错误。所以改变:
public void OriginalMethod(){
至:
public OriginalMethod() {
并删除行:
newki.OriginalMethod();
这并不是我在 Java 中学习编写 classes 的真正方式(我学会了在项目包中创建新的 Java classes 而不是直接在 Main Class 中创建许多 classes。这将允许您创建构造函数,然后使用 super 关键字或什至通过某些 [= 轻松传递变量31=]getter-setters。但是,对于您提供的代码,我找到的最简单的解决方案是:
public class Main {
public static void main(String[] args) {
int[]tomb;
OriginalMethod firstoutput = new OriginalMethod();
tomb = firstoutput.OriginalMethod();
firstoutput.out(tomb);
overki newki = new overki();
newki.out(tomb);
}
static class OriginalMethod {
public int[] OriginalMethod(){
int []tomb = new int[3];
for(int i = 0; i<3;i++)
{
Scanner beolvas = new Scanner(System.in);
System.out.println("Enter the "+(i+1)+".number");
tomb[i] = beolvas.nextInt();
}
return tomb;
}
public void out(int[]tomb)
{
for(int i = 0; i<3;i++)
{
System.out.print(tomb[i]+" ");
}
}
}
static class overki extends OriginalMethod {
@Override
public void out(int[]tomb)
{
System.out.println();
for(int i = 0; i<3;i++)
{
System.out.println(i+". "+tomb[i]);
}
}
}
}
请允许我解释一下我所做的更改。首先,我将 int[]tomb
变量移出 OriginalMethod
class 并移入 Main。然后,我将 OriginalMethod
更改为 return 一个 int 数组。因此,您可以通过编写 tomb = firstoutput.OriginalMethod()
轻松地将您的数组从 OriginalMethod
中“导出”。从那里,您只需更改 out
方法,以便它们都接收我们在 Main 中创建的数组(因为第二个 out()
方法是 覆盖,绝对有必要他们都收到相同的 参数中的东西)。
好吧,它成功了。现在,它是完美的吗?可能不会。正如我所说,如果我自己这样做,我可能会使用 getter-setters,但是从您的原始代码开始,这是我找到的最简单的解决方案!