java 在调取方法时出错 请各位帮看看 很是不解

package study;

import java.util.Scanner;

public abstract class GuessGame {
Scanner in = new Scanner(System.in);
public void go(){
int number = (int)Math.random()*10;
int guess;
do{
guess = nextInt();
}while(guess != number);
println("猜中了");
}
public void println(String text){
print(text + "\n");
}
public abstract void print(String text);
public abstract int nextInt();

public static void main(String[] args) {
    ConsoleGame da = new ConsoleGame();
    da.go();

}

}
class ConsoleGame extends GuessGame{

@Override
public void print(String text) {
    System.out.print(text);

}
@Override
public void println(String text){
    System.out.println(text);
}

@Override
public int nextInt() {
    // TODO 自动生成的方法存根
    return in.nextInt();
}

}图片说明

为什么两个class会放在一个文件里?????

方法类型不对应,一个是study下的String类型,一个是Java自带的String类型,两种方法,一是删除@Override修饰,二就是你不调用print()方法,直接使用System.out.print(“猜中了”);

你的study下是不是有个 String 类?? 导入 import java.lang.String, 将study下的String类重命名,最好别跟jar包中的同名。

println()是C的输出写法
System.out.print()/System.out.println();是java中的写法System.out::println是java中配合lambda的写法

换成System.out.print()或者System.out.println();

这样试试:

 ConsoleGame cg = new ConsoleGame();
 cg.println("猜中了");

或者:

 System.out.println("猜中了");

ConsoleGame 这个子类只需要重写public abstract void print(String text);
这个抽象 方法取可,不用重写 println这个。

你的println方法不是静态的,不可以直接调用,必须创建对象,通过对象调用方法