通过Friedman/Felleisen建立DrJava;“一点Java”;
全部, 我正在阅读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()); } } 编译器在程序中找不到符号通过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
点
和曼哈顿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的书