构造器权限与类权限的问题

关于java构造器权限与类权限的问题

在Demo包中有如下文件
public class Demo {
     Demo(){
        System.out.println("hehe");
    }
    public static void main(String[] args) {
        Child  c = new Child();
    }
}
在Demo1包中有如下文件
package Demo1;
import Demo.Demo;
public class Demo2 {
public static void main(String[] args) {
    Demo d = new Demo();
}
}

然而上述代码运行是错误的问什么呢?(看看我慢慢的分析 分析错了别打我^_^!!)

在一般的情况下,我们习惯性的将类的构造器官权限相性成包访问权限或public或者根本就没有考虑过构造器权限这个问题,这是很容易出现问题的。那么这个问题我是怎么发现的呢?
其实我是在分析设计构造器过程的时候,遇到了一个设计问题,那就是在没有显示的写出构造器情况下编译器该怎么办?都知道编译器默认合成一个函数体为空的无参构造器呗。确实很简单,但是我反汇编之后发现这个合成的默认构造器和我想先的不太一样,他这个编译器生成的构造器有访问权限,并且访问权限与类的一样。在我之前编写程序一直都是public,设计编译器的人在这上边下工夫肯定有文章的。
首先解决为什么合成的默认(无参)构造器的权限与类相同呢?
这其实很简单,类的权限的作用是决定用户是否能创建对象的(假设类的设计与使用不在一个包中),public说明用户可以使用这个类,并且创建这个类的对象,那么创建对象

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值