关于默认构造函数的小问题

zephyr_cc 2007-07-04 12:16:20
//: 文件1,路径:com\test\T.java
package com.test;
public class T {
T() { }
}
//: 文件2,路径:C.java
import com.test;
public class C {
public static void main(String[] args) {
T t = new T();
}
}
文件2编译失败...
将文件1构造函数去掉,再编译文件2,成功.
结论:默认构造函数是public的.
不知道这么说对不对,还是有什么别的说法,恳请指点.
...全文
231 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mithrilon 2007-07-04
  • 打赏
  • 举报
回复
类成员默认都是包访问,这两个类没在同一个包里,所以C类无法访问T类的构造方法
grass_12 2007-07-04
  • 打赏
  • 举报
回复
不是这样的,还是写明比较好点
mithrilon 2007-07-04
  • 打赏
  • 举报
回复
所谓默认的构造方法就是不自己实现,而是由系统提供的,这个构造方法是public的

但如果自己写了任何构造方法,系统就不再提供默认的构造方法了。所以LZ的T类的构造方法不是public的,而是所谓friendly的
Eilien 2007-07-04
  • 打赏
  • 举报
回复
public 是跨包使用啊。记住了。
zhangjie7823 2007-07-04
  • 打赏
  • 举报
回复
不用修饰符的方法又叫友好方法。必须在同一包下使用;而默认的构造方法是public的,可以任意跨包使用
Dan1980 2007-07-04
  • 打赏
  • 举报
回复
默认构造函数是public的,正确。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧