zoukankan      html  css  js  c++  java
  • 浅析java构造函数前的访问限定符问题

      曾经一直有个问题困扰着我,我一直以为构造函数前面不能加任何东西,但偶然间看到了一本书上写的代码中,构造函数前加了public限定符,心里很是疑惑,构造函数前加毛访问限定符啊??!  在网上查了很多资料,论坛上发帖,依旧没有解决这个问题。今天亲自测试了下,得出了答案。

      首先,在两个源文件中建立两个类,HolidaySked和text;代码如下:

    文件 HolidaySked.java源码:

    import java.util.*;
    
    public class HolidaySked{
        BitSet sked;
        
       private HolidaySked(){                 //    此处将HolidaySked类的构造函数声明为private。
            sked = new BitSet(365);
            int[] holiday = {1,15,50,148};
            for(int i = 0;i<holiday.length;i++){
                addHoliday(holiday[i]);
            } 
        }
        public void addHoliday(int dayToAdd){
            
            sked.set(dayToAdd);
            
        }
        public boolean isHoliday(int dayToCheck){
            boolean result = sked.get(dayToCheck);
            return result;
        }
       
    }
    

    文件text.java源码:

    public class text {
        public static void main(String[] arguments){
            HolidaySked cal = new HolidaySked();          //此处会出现一个错误:  // HolidaySked() has private access in javaforworld.HolidaySked
            if(arguments.length>0){
                try{
                    int whichDay=Integer.parseInt(arguments[0]);
                    if(cal.isHoliday(whichDay)){
                        System.out.println("Day number "+ whichDay +" ia a holiday.");
                        
                    }else{
                        System.out.println("Day number "+whichDay+" is not a holiday.");
                    }
                }catch(NumberFormatException nfe){
                    System.out.println("Error: "+nfe.getMessage());
                }
            }
        }
    }

    在此 ,我只测试了private限制的构造函数,事实证明,同一个包中的不同类是无法实例化带有private构造函数的类的, 其他几个限定符protected ,public 和一般函数限定情况是一致的,感兴趣的可自行测试。


    也就是说,若一个类的构造函数声明为private,的只有是无法实例化对象的,默认的访问限定符只能包内声明对象(已测试),而public的可以全局声明对象。 


                                                                                                                                                                本人JAVA新手 欢迎交流 QQ:178904780


    作者:郭耀华
    出处:http://www.guoyaohua.com
    微信:guoyaohua167
    邮箱:guo.yaohua@foxmail.com
    本文版权归作者和博客园所有,欢迎转载,转载请标明出处。
    【如果你觉得本文还不错,对你的学习带来了些许帮助,请帮忙点击右下角的推荐】

    dashang
  • 相关阅读:
    Swift3 重写一个带占位符的textView
    Swift3 使用系统UIAlertView方法做吐司效果
    Swift3 页面顶部实现拉伸效果代码
    Swift3 倒计时按钮扩展
    iOS 获取当前对象所在的VC
    SpringBoot在IDEA下使用JPA
    hibernate 异常a different object with the same identifier value was already associated with the session
    SpringCloud IDEA 教学 番外篇 后台运行Eureka服务注册中心
    SpringCloud IDEA 教学 (五) 断路器控制台(HystrixDashboard)
    SpringCloud IDEA 教学 (四) 断路器(Hystrix)
  • 原文地址:https://www.cnblogs.com/guoyaohua/p/8502952.html
Copyright © 2011-2022 走看看