黑马程序员技术交流社区

标题: 包结构,构造函数的问题 [打印本页]

作者: Shimano    时间: 2014-4-17 16:42
标题: 包结构,构造函数的问题
  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

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

  



作者: Shimano    时间: 2014-4-17 17:51
呆呆沙师妹 发表于 2014-4-17 16:52
这是访问控制符的问题,你没有理解public、protect、default和private的访问权限的区别。
DemoOne类与Packa ...

你说的对!
是我记错了,我怎么记得构造函数系统默认访问权限是跟随所属类的...
那到底是哪个,其权限默认是和所属类相同的?并且不能写权限修饰符?你有没有印象?
作者: 呆呆沙师妹    时间: 2014-4-17 18:09
Shimano 发表于 2014-4-17 17:51
你说的对!
是我记错了,我怎么记得构造函数系统默认访问权限是跟随所属类的...
那到底是哪个,其权限默 ...

这个我不知道呢,你在哪看到过?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2