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
  • 相关阅读:
    洛谷 U141580 简化罗波切问题
    洛谷 U141578 维修电路
    洛谷 U140760 狭义公因子
    CF75C Modified GCD
    算法题-求解斐波那切数列的第N个数是几?
    算法题-求N的阶乘
    JAVA8新特性
    nginx启动脚本,手动编辑
    javah生成带有包名的头文件
    Matlab图像处理(03)-基本概念
  • 原文地址:https://www.cnblogs.com/guoyaohua/p/8502953.html
Copyright © 2011-2022 走看看