A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Shimano 中级黑马   /  2014-4-17 16:42  /  1115 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package pack;
  2. class PackageDemo1
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 System.out.println("我是PackageDemo1");
  7.                 packone.DemoOne one = new packone.DemoOne();
  8.                 one.method();
  9.         }
  10. }
  11. package packone;
  12. public class DemoOne
  13. {
  14.         //当创建构造函数时,编译失败,提示 “DemoOne()在DemoOne中不是公共的; 无法从外部程序包中对其进行访问”
  15.         DemoOne()
  16.         {
  17.                 System.out.println("我是DemoOne构造函数");
  18.         }
  19.        
  20.         public void method()
  21.         {
  22.                 System.out.println("我是DemoOne的方法");
  23.         }
  24. }
复制代码
如程序所示:
为什么在pack包中,PackageDemo1类中主函数创建packone包中DemoOne类的对象时,编译时显示如下错误:
“DemoOne()在DemoOne中不是公共的; 无法从外部程序包中对其进行访问”
当把自定义构造函数注释掉后,编译通过。
难道这种情况下啊,不能在DemoOne自定义构造函数吗?

file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\214761795\QQ\WinTemp\RichOle\0Q)](WDVI`_))CFM}G7KHQO.jpg

file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\214761795\QQ\WinTemp\RichOle\0Q)](WDVI`_))CFM}G7KHQO.jpg


0Q)](WDVI`_))CFM}G7KHQO.jpg (38.92 KB, 下载次数: 1)

0Q)](WDVI`_))CFM}G7KHQO.jpg

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

4 个回复

倒序浏览
这是访问控制符的问题,你没有理解public、protect、default和private的访问权限的区别。
DemoOne类与PackageDemo1存在不同的包中,而DemoOne的构造函数前没有加访问控制符,也就是采用了default默认的权限,DemoOne的构造函数只能被同一个包中的类所使用。
编译当然会出问题了,在构造函数前加public就行了。
回复 使用道具 举报
构造方法一般是public权限,这样在其他的类中可以方便调用,如果不写public就默认为default权限,默认权限下只能在同一个包中或者该类的子类中访问。所以有以下的解决办法:
1. DemoOne()改成public  DemoOne()
2. 放在同一个包中
3.在package pack中导包并让 PackageDemo1继承DemoOne
  import packone;
  class PackageDemo1 extends DemoOne{
  }

  


回复 使用道具 举报
呆呆沙师妹 发表于 2014-4-17 16:52
这是访问控制符的问题,你没有理解public、protect、default和private的访问权限的区别。
DemoOne类与Packa ...

你说的对!
是我记错了,我怎么记得构造函数系统默认访问权限是跟随所属类的...
那到底是哪个,其权限默认是和所属类相同的?并且不能写权限修饰符?你有没有印象?
回复 使用道具 举报
Shimano 发表于 2014-4-17 17:51
你说的对!
是我记错了,我怎么记得构造函数系统默认访问权限是跟随所属类的...
那到底是哪个,其权限默 ...

这个我不知道呢,你在哪看到过?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马