浅析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
浅析java构造函数前的访问限定符问题的更多相关文章
- Java 中的 protected 访问修饰符你真的了解吗?
protected Java 中的 protected 访问修饰符 总结 在同一个包中,类中 protected 或 default 修饰的属性或方法可以在类外被其对象 (实例) 外部访问,也可以被子 ...
- Java入门系列之访问修饰符作用范围
前言 之前以为Java和C#中访问修饰符差不多一样,后面才了解到还是有些差异,本节只讲解学习Java中访问修饰符一些需要注意的地方或者从概念上不太好理解我们会通过实际例子来说明,若有错误之处,还请批评 ...
- 简单的描述Java中的构造函数,及访问修饰符
作为一个Java 初学者,对Java的理解可能有些片面,甚至有些错误的理解,对于观看此处的您,希望您选择性观看!!! 访问修饰符: 1.常用访问修饰符: public 共有的 private 私有的 ...
- Java面向对象入门(2)-访问修饰符
Java访问修饰符–public, protected, private and default Java提供了四个访问修饰符来设置类,变量,方法和构造函数的访问级别,即public,private, ...
- java中四种访问修饰符
Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量) public protected d ...
- Java包、权限访问修饰符、封装性
包 概念: 物理上是文件夹:逻辑上是有逻辑关系的类的集合 作用: 避免类重名:控制访问权限 命名规范: 在包名中,可以使用.号来区分包的级别:包名一般情况下是小写 第一级 指该项目的类型,如com,o ...
- Java public 和 private 访问修饰符
何为封装 从事面向对象编程的 Java 程序员,不可能不知道封装,它是面向对象编程的精髓,非常重要. 那什么是封装?字面意思就是把摆在外面的东西包起来. 一句话,封装就是对外隐藏内部细节. 那为何要封 ...
- JAVA 中的权限访问修饰符(public,protected,default,private )
JAVA中有四个权限访问修饰符:public,protected,default,private 注意:这里讲的是对类中属性和方法的访问权限,并不是类的访问权限 1.default:包访问权限 如果什 ...
- Java—匿名对象/内部类/访问修饰符/代码块
匿名对象 匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. //创建一个普通对象 Person p = new Person(); //创建一个匿名对象 new Pers ...
随机推荐
- Sql server 的float和real类型会产生科学计数法,如何消除科学计数法
sqlserver 查询的 float 类型 如果是0.00000000001的话,会被显示为1E-11,请问怎么才能让查询出的结果显示为正常显示方式而不是科学计数法? 答案: float 和 rea ...
- ubuntu安装python-ldap模块
模块 一直很头疼好多依赖的模块 今天安装一个python-ldap 和ldap交互的模块 首先安装的时候会提示我们 compilation terminated. error: command 'x ...
- Apache的安装与AWstats分析系统
实验拓扑图: 实验要求: 1. WEB服务器: 使用源码包apache实现.安装完成后,并优化执行路径. 启动服务后,客户端通过http://IP能访问默认的网站. 2. DNS服务器: 安装DN ...
- 有关于分布式缓存Hazelcast
如果在内网段中部署或者启动缓存服务.不能存在相同的组名称.如同使用dubbo一样,会导致无法连接到缓存节点
- JFreeChart框架中生成饼状图上怎样显示数据 [问题点数:40分,结帖人GreenLawn]
我用JFreeChart框架生成饼状图,但想把数据信息在饼图上显示,是在饼图内部(即圆内)显示!怎样实现啊?? 去掉lablepieplot.setLabelGenerator(null);去掉线p ...
- 腾讯课堂老师qq号码转换成 teacherid
result = 215696775^858006833 if(result){ result=4294967296+result; } alert(result);
- Python第三方模块--requests简单使用
1.requests简介 requests是什么?python语言编写的,基于urllib的第三方模块 与urllib有什么关系?urllib是python的内置模块,比urllib更加简洁和方便使用 ...
- pyspider爬取数据存入redis--2.测试数据库连通性
直接上代码 #!/usr/bin/env python # -*- encoding: utf-8 -*- # Created on 2017-10-27 09:56:50 # Project: re ...
- 在nodeJS中操作文件系统(二)
在nodeJS中操作文件系统(二) 1. 移动文件或目录 在fs模块中,可以使用rename方法移动文件或目录,使用方法如下: fs.rename(oldPath,newPath,call ...
- Underscore.js 入门
Underscore封装了常用的JavaScript对象操作方法,用于提高开发效率.将它单独运用到任何一个页面.(另外,Underscore还可以被使用在Node.js运行环境.) 在学习Unders ...