Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Friedman/Felleisen建立DrJava;“一点Java”;_Java_Oop - Fatal编程技术网

通过Friedman/Felleisen建立DrJava;“一点Java”;

通过Friedman/Felleisen建立DrJava;“一点Java”;,java,oop,Java,Oop,全部, 我正在阅读Friedman&Felleisen的书《一点Java,一些模式》。我试图用DrJava输入示例,但是我得到了一些错误。我是初学者,所以我可能会犯新手错误 以下是我的设置: public class ALittleJava { //ABSTRACT CLASS POINT abstract class Point { abstract int distanceToO(); } class CartesianPt extends Point { i

全部,

我正在阅读Friedman&Felleisen的书《一点Java,一些模式》。我试图用DrJava输入示例,但是我得到了一些错误。我是初学者,所以我可能会犯新手错误

以下是我的设置:

public class ALittleJava { //ABSTRACT CLASS POINT abstract class Point { abstract int distanceToO(); } class CartesianPt extends Point { int x; int y; int distanceToO(){ return((int)Math.sqrt(x*x+y*y)); } CartesianPt(int _x, int _y) { x=_x; y=_y; } } class ManhattanPt extends Point { int x; int y; int distanceToO(){ return(x+y); } ManhattanPt(int _x, int _y){ x=_x; y=_y; } } } 公共类ALittleJava{ //抽象类点 抽象类点{ 抽象int distanceToO(); } 类笛卡尔点{ int x; int-y; int distanceToO(){ 返回((int)Math.sqrt(x*x+y*y)); } 卡特尔条约(国际x,国际y){ x=x; y=_y; } } 曼哈顿点类{ int x; int-y; int distanceToO(){ 返回(x+y); } 曼哈顿NPT(国际x,国际y){ x=x; y=_y; } } } 在主要方面:

public class Main{ public static void main (String [] args){ Point y = new ManhattanPt(2,8); System.out.println(y.distanceToO()); } } 公共班机{ 公共静态void main(字符串[]args){ 点y=新曼哈顿NPT(2,8); System.out.println(y.distanceToO()); } } 编译器在程序中找不到符号
曼哈顿NPT

如果我在每一个前面加上
ALittleJava.
,我会在main中得到另一个错误,即

需要包含ALittleJava.ManhattanPt的封闭实例

我试着在网上寻找资源,但这本书肯定有一个相当机密的追随者,我找不到多少

谢谢大家


JDelage

将内部类设置为静态的
类,否则您需要从ALittleJava实例访问内部类,例如
ALittleJava java=new ALittleJava()
,它似乎与您的用例不匹配


静态
内部类看不到其封闭类的成员,如果类是非静态的,则相反,它们可以看到其封闭类的成员,并且实际上需要封闭实例。

此代码是从书中逐字复制的吗?如果是这样的话,这种结构就有点反常了——通常每个文件定义一个类(Point.java、CartesionPt.java等),并且只有在特殊情况下才这样设置(使用内部类)。

现在我想起来了,ALittleJava是一个疯狂的类名,除非它是主类


如果将
publicstaticvoidmain(String[]args)
放在
ALittleJava
中,您应该能够使用这些类。

使您的文件如下所示:

//ABSTRACT CLASS POINT
abstract class Point {
  abstract int distanceToO();
}
class CartesianPt extends Point {
  int x;
  int y;
  int distanceToO(){
    return((int)Math.sqrt(x*x+y*y));
  }
  CartesianPt(int _x, int _y) {
    x=_x;
    y=_y;
  }
}
class ManhattanPt extends Point {
  int x;
  int y;
  int distanceToO(){
    return(x+y);
  }
  ManhattanPt(int _x, int _y){
    x=_x;
    y=_y;
  }
}
class Main {
  public static void main (String [] args) {
    Point y = new ManhattanPt(2,8);
    System.out.println(y.distanceToO());
  }
}
然后,在“交互”选项卡中键入以下命令:

java Main

但是,
摘要
是这本书的核心。这本书没有描述如何设置代码,将什么放入不同的文件中,等等。除了第一行以外,所有内容都是书中的逐字逐句。Stefan Kendall的回答是正确的-main()应该在类ALittleJava中声明,而不是在自己的class.IMO中声明,关于Java最好的入门书是Bruce Eckel的《用Java思考》。Friedman/Felleisen更为人所知的是他们关于lisp的书