lijiannan_1981
著名写手
著名写手
  • 铜币15枚
  • 威望0点
  • 贡献值0点
阅读:663回复:11

[求助]一个关于包的编绎问题。请教kwang老师:-)

楼主#
更多 发布于:2004-06-18 01:31
在昨天晚上做程序时,出现了这样的一个问题:以下四个类放在一个文件中进行编译正常,可是单把各个类分别存为JAVA文件,再进行编译就会出现错误,请问是什么原因?多谢!!
package p1;
class Protection{//当作为单独文件时前面加public
int n=1;
private int n_pri=2;
protected int n_pro=3;
public int n_pub=4;

public Protection(){
System.out.println("base constructor");
System.out.println("n="+n);
System.out.println("n_pri="+n_pri);
System.out.println("n_pro="+n_pro);
System.out.println("n_pub="+n_pub);
}
}

class Derived extends Protection{
Derived(){
System.out.println("derived constructor");
System.out.println("n="+n);
//class only: System.out.println("n_pri="+n_pri);
System.out.println("n_pro="+n_pro);
System.out.println("n_pub="+n_pub);
}
}

class SamePackage{
SamePackage(){
Protection p=new Protection();
System.out.println("same package constructor");
System.out.println("n="+p.n);

//class only
//System.out.println("n_pri="+p.n_pri);
System.out.println("n_pro="+p.n_pro);
System.out.println("n_pub="+p.n_pub);
}
}

public class Demo{
public static void main(String args[]){
Protection ob1=new Protection();
Derived ob2=new Derived();
SamePackage ob3=new SamePackage();
}
}
分成单独文件时对Protection编译通过;但对后几个进行编译时出错:

如对Derived.java编译时出现:

Derived.java:14:cannot resolve symbol
symbol:class Protection
location:calss p1.Derived
class Derived extends Protection{
^
Derived.java:7:cannot resolve symbol
symbol:variable n
location:calss p1.Derived
System.out.println("n="+n);
^
.........

4 errors

注:已放入p1目录

--------------------
计算机=生命
我   =   她 [ 2004-06-18 15:01:51 lijiannan_1981 修改 ]
无。
southeast
著名写手
著名写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
1C#
发布于:2004-06-18 03:17
Re:[求助]一个关于包的编绎问题。请教kwang老师:-)
你把单个文件的代码贴出来看看。
我看到哪个变量n的问题,如果你在一个类中定义一个变量时没有没有申明public\protected\static\final等默认的属性是当前类可以访问,不能从别的包访问。
太晚了,想睡了,明天再来看看。
其实只要了解了public\protected……的具体含义以及包之间类、域、方法访问权限的关系,写这种程序应该不是问题吧。

     zzz
-   -
  - -------------------- 好好吃饭,天天睡觉
努力赚钱,娶个老婆
[img]http://www.wait4c.com/bbs/userfiles/2196/2005051614543457820.jpg[/img]
lijiannan_1981
著名写手
著名写手
  • 铜币15枚
  • 威望0点
  • 贡献值0点
2C#
发布于:2004-06-18 09:12
Re:[求助]一个关于包的编绎问题。请教kwang老师:-)
你把单个文件的代码贴出来看看。
我看到哪个变量n的问题,如果你在一个类中定义一个变量时没有没有申明public\protected\static\final等默认的属性是当前类可以访问,不能从别的包访问。
太晚了,想睡了,明天再来..


按照你的方法做了
还是不成功
怎么办啊???
无。
mumu
写手
写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
3C#
发布于:2004-06-18 13:22
Re:[求助]一个关于包的编绎问题。请教kwang老师:-)
代码是没有问题的,分成不同的文件也没有问题。

编译问题。
去掉package pl; 看。

不去package pl ,是不是编译时候加什么选项的?
王小波说:“中年妇女在中国是一种自然灾害,这倒不是因为她们不好看,而是因为她们故意要恶心人。” 一天,我乘坐公交车,一位MM突然转过头来对我说:“你帅吗?”我说:“我不帅!”MM突然给我一巴掌,并说:“我最讨厌说谎的人了!” 如果你更热爱金钱而非自由,更习惯于被奴役的安宁而畏惧令人充满活力的争取自由的抗争,那么,请你静静地走开。我们不会乞求你的建议或是帮助。伏下身去讨好那喂养你的人吧。但愿身上的锁链不会给你造成太多的痛苦,但愿未来的人们不会记起你曾经是我们的国人 Samuel Adams: 18世纪美国独立革命重要领袖,著有“殖民者的权利”
lijiannan_1981
著名写手
著名写手
  • 铜币15枚
  • 威望0点
  • 贡献值0点
4C#
发布于:2004-06-18 15:01
Re:[求助]一个关于包的编绎问题。请教kwang老师:-)
代码是没有问题的,分成不同的文件也没有问题。

编译问题。
去掉package pl; 看。

不去package pl ,是不是编译时候加什么选项的?

经刚才再次调试
仍然不成功
无。
嘿嘿
普通会员
普通会员
  • 铜币0枚
  • 威望0点
  • 贡献值0点
5C#
发布于:2004-06-18 18:56
Re:[求助]一个关于包的编绎问题。请教kwang老师:-)
JAVA偶不懂,帮你顶一下,HOHO -------------------- 嘿嘿
嘿嘿
mumu
写手
写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
6C#
发布于:2004-06-18 21:22
Re:[求助]一个关于包的编绎问题。请教kwang老师:-)
问题都不写清楚些:(

你拆成怎样了?

我是这样的:

Demo.java
========

public class Demo{
public static void main(String args[]){
Protection ob1=new Protection();
Derived ob2=new Derived();
SamePackage ob3=new SamePackage();
}
}
========

Derived.java
========
class Derived extends Protection{
Derived(){
System.out.println("derived constructor");
System.out.println("n="+n);
//class only: System.out.println("n_pri="+n_pri);
System.out.println("n_pro="+n_pro);
System.out.println("n_pub="+n_pub);
}
}

class SamePackage{
SamePackage(){
Protection p=new Protection();
System.out.println("same package constructor");
System.out.println("n="+p.n);

//class only
//System.out.println("n_pri="+p.n_pri);
System.out.println("n_pro="+p.n_pro);
System.out.println("n_pub="+p.n_pub);
}
}

===========

Protection.java

===========

class Protection{//当作为单独文件时前面加public
int n=1;
private int n_pri=2;
protected int n_pro=3;
public int n_pub=4;

public Protection(){
System.out.println("base constructor");
System.out.println("n="+n);
System.out.println("n_pri="+n_pri);
System.out.println("n_pro="+n_pro);
System.out.println("n_pub="+n_pub);
}
}
===========

javac Demo.java

java Demo

===========
---------- java ----------
base constructor
n=1
n_pri=2
n_pro=3
n_pub=4
base constructor
n=1
n_pri=2
n_pro=3
n_pub=4
derived constructor
n=1
n_pro=3
n_pub=4
base constructor
n=1
n_pri=2
n_pro=3
n_pub=4
same package constructor
n=1
n_pro=3
n_pub=4
Normal Termination
Output completed (0 sec consumed).
王小波说:“中年妇女在中国是一种自然灾害,这倒不是因为她们不好看,而是因为她们故意要恶心人。” 一天,我乘坐公交车,一位MM突然转过头来对我说:“你帅吗?”我说:“我不帅!”MM突然给我一巴掌,并说:“我最讨厌说谎的人了!” 如果你更热爱金钱而非自由,更习惯于被奴役的安宁而畏惧令人充满活力的争取自由的抗争,那么,请你静静地走开。我们不会乞求你的建议或是帮助。伏下身去讨好那喂养你的人吧。但愿身上的锁链不会给你造成太多的痛苦,但愿未来的人们不会记起你曾经是我们的国人 Samuel Adams: 18世纪美国独立革命重要领袖,著有“殖民者的权利”
mumu
写手
写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
7C#
发布于:2004-06-18 21:32
Re:[求助]一个关于包的编绎问题。请教kwang老师:-)
代碼寫得不整齊,還有package p1

用數字可能不規範。

packagename/Demo.java 中加上package packagename; 在Eclipse 下沒問題。

但我用命令行編譯也出現問題。JAVA不太熟:))我覺得是定義package 時 編譯方法有特別的規則。查書上的例子就可以解決。
王小波说:“中年妇女在中国是一种自然灾害,这倒不是因为她们不好看,而是因为她们故意要恶心人。” 一天,我乘坐公交车,一位MM突然转过头来对我说:“你帅吗?”我说:“我不帅!”MM突然给我一巴掌,并说:“我最讨厌说谎的人了!” 如果你更热爱金钱而非自由,更习惯于被奴役的安宁而畏惧令人充满活力的争取自由的抗争,那么,请你静静地走开。我们不会乞求你的建议或是帮助。伏下身去讨好那喂养你的人吧。但愿身上的锁链不会给你造成太多的痛苦,但愿未来的人们不会记起你曾经是我们的国人 Samuel Adams: 18世纪美国独立革命重要领袖,著有“殖民者的权利”
mumu
写手
写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
8C#
发布于:2004-06-18 21:33
Re:[求助]一个关于包的编绎问题。请教kwang老师:-)
還有就是,越來越覺得Python 比較適合初學者了:))
王小波说:“中年妇女在中国是一种自然灾害,这倒不是因为她们不好看,而是因为她们故意要恶心人。” 一天,我乘坐公交车,一位MM突然转过头来对我说:“你帅吗?”我说:“我不帅!”MM突然给我一巴掌,并说:“我最讨厌说谎的人了!” 如果你更热爱金钱而非自由,更习惯于被奴役的安宁而畏惧令人充满活力的争取自由的抗争,那么,请你静静地走开。我们不会乞求你的建议或是帮助。伏下身去讨好那喂养你的人吧。但愿身上的锁链不会给你造成太多的痛苦,但愿未来的人们不会记起你曾经是我们的国人 Samuel Adams: 18世纪美国独立革命重要领袖,著有“殖民者的权利”
lijiannan_1981
著名写手
著名写手
  • 铜币15枚
  • 威望0点
  • 贡献值0点
9C#
发布于:2004-06-18 22:14
Re:[求助]一个关于包的编绎问题。请教kwang老师:-)
[em142]
還有就是,越來越覺得Python 比較適合初學者了:))
-------------------- 计算机=生命
我   =   她
无。
lijiannan_1981
著名写手
著名写手
  • 铜币15枚
  • 威望0点
  • 贡献值0点
10C#
发布于:2004-06-18 22:17
Re:[求助]一个关于包的编绎问题。请教kwang老师:-)
谢谢mumu师哥了
问题已经得到了解决
你给我的提议是对的

还有就是如果多个类写在一个文件中,则不管成员的访问描述符如何,这些类的实例都可以
对这些成员进行访问. 同在一个package中的类,不在一个文件中则可以访问不加修饰符
(默认为proctected),proctected, public的成员,但是不能访问private成员。

-------------------- 计算机=生命
我   =   她
无。
mumu
写手
写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
11C#
发布于:2004-06-19 15:51
Re:[求助]一个关于包的编绎问题。请教kwang老师:-)
回家看了thinking in java 里面package 的一章。

原来编译时要确定CLASSPATH ,这个是package 麻烦的地方,前面的编译错误是因为这个问题。

所以你去掉package 就没有CLASSPATH 的问题。
王小波说:“中年妇女在中国是一种自然灾害,这倒不是因为她们不好看,而是因为她们故意要恶心人。” 一天,我乘坐公交车,一位MM突然转过头来对我说:“你帅吗?”我说:“我不帅!”MM突然给我一巴掌,并说:“我最讨厌说谎的人了!” 如果你更热爱金钱而非自由,更习惯于被奴役的安宁而畏惧令人充满活力的争取自由的抗争,那么,请你静静地走开。我们不会乞求你的建议或是帮助。伏下身去讨好那喂养你的人吧。但愿身上的锁链不会给你造成太多的痛苦,但愿未来的人们不会记起你曾经是我们的国人 Samuel Adams: 18世纪美国独立革命重要领袖,著有“殖民者的权利”
游客

返回顶部