曾经一直有个问题困扰着我,我一直以为构造函数前面不能加任何东西,但偶然间看到了一本书上写的代码中,构造函数前加了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

浅析java构造函数前的访问限定符问题的更多相关文章

  1. Java 中的 protected 访问修饰符你真的了解吗?

    protected Java 中的 protected 访问修饰符 总结 在同一个包中,类中 protected 或 default 修饰的属性或方法可以在类外被其对象 (实例) 外部访问,也可以被子 ...

  2. Java入门系列之访问修饰符作用范围

    前言 之前以为Java和C#中访问修饰符差不多一样,后面才了解到还是有些差异,本节只讲解学习Java中访问修饰符一些需要注意的地方或者从概念上不太好理解我们会通过实际例子来说明,若有错误之处,还请批评 ...

  3. 简单的描述Java中的构造函数,及访问修饰符

    作为一个Java 初学者,对Java的理解可能有些片面,甚至有些错误的理解,对于观看此处的您,希望您选择性观看!!! 访问修饰符: 1.常用访问修饰符: public 共有的 private 私有的 ...

  4. Java面向对象入门(2)-访问修饰符

    Java访问修饰符–public, protected, private and default Java提供了四个访问修饰符来设置类,变量,方法和构造函数的访问级别,即public,private, ...

  5. java中四种访问修饰符

    Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量)   public protected d ...

  6. Java包、权限访问修饰符、封装性

    包 概念: 物理上是文件夹:逻辑上是有逻辑关系的类的集合 作用: 避免类重名:控制访问权限 命名规范: 在包名中,可以使用.号来区分包的级别:包名一般情况下是小写 第一级 指该项目的类型,如com,o ...

  7. Java public 和 private 访问修饰符

    何为封装 从事面向对象编程的 Java 程序员,不可能不知道封装,它是面向对象编程的精髓,非常重要. 那什么是封装?字面意思就是把摆在外面的东西包起来. 一句话,封装就是对外隐藏内部细节. 那为何要封 ...

  8. JAVA 中的权限访问修饰符(public,protected,default,private )

    JAVA中有四个权限访问修饰符:public,protected,default,private 注意:这里讲的是对类中属性和方法的访问权限,并不是类的访问权限 1.default:包访问权限 如果什 ...

  9. Java—匿名对象/内部类/访问修饰符/代码块

    匿名对象 匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. //创建一个普通对象 Person p = new Person(); //创建一个匿名对象 new Pers ...

随机推荐

  1. sql 经典面试题及答案(选课表)

    SQL数据库面试题以及答案 Student(Sno,Sname,Sage,Ssex) 学生表       Sno:学号:Sname:学生姓名:Sage:学生年龄:Ssex:学生性别Course(Cno ...

  2. Shell 脚本合集

    0. 说明  Shell 脚本合集 1. xcall.sh xcall.sh 编写为了为了同时对多台服务器进行操作,编写完成之后,将其发送到 /usr/local/bin 下 #!/bin/bash ...

  3. 【转】Java学习---JDK、JRE和JVM的关系

    [原文]https://www.toutiao.com/i6591348937267872269/ 首先是JDK JDK(Java Development Kit) 是 Java 语言的软件开发工具包 ...

  4. java使用elasticsearch进行模糊查询-已在项目中实际应用

    java使用elasticsearch进行模糊查询 使用环境上篇文章本人已书写过,需要maven坐标,ES连接工具类的请看上一篇文章,以下是内容是笔者在真实项目中运用总结而产生,并写的是主要方法和思路 ...

  5. node.js 笔记一

    现在地址:http://nodejs.org/download/ 我的机器是windows的,选择的文件是,是编译后的版本:Windows Installer (.msi)  32-bit examp ...

  6. 获取QQ头像接口

    https://q4.qlogo.cn/g?b=qq&nk=QQ号码&s=140

  7. 洛谷 P4707 【重返现世】

    题目分析 题目就是求第K种原料的出现期望时间. 考虑广义min-max容斥. \(\text{kthmax}(S)=\sum\limits_{T\subseteq S}(-1)^{|T|-k}\bin ...

  8. rhel7.6上安装Oracle 19.2.0.0 RAC

    1. 软硬件检查 2. 安装前环境配置 3. 安装GI su - grid -- 解压软件包 unzip -q /ups/soft/V981627-01.zip -d ${ORACLE_HOME} - ...

  9. 为什么重写equals必须重写hashcode?

    示例代码: class User { private String name; public User(String name) { this.name = name; } @Override pub ...

  10. PHP百万级数据导出方案(多csv文件压缩)

    本文转自网络仅供学习之用 概述: 最近公司项目要求把数据除了页面输出也希望有导出功能,虽然之前也做过几个导出功能,但这次数据量相对比较大,差不多一天数据就20W条,要求导7天或者30天,那么数据量就轻 ...