private的构造函数能直接使用?

问题描述

publicclassSquareTool{privateStringstr;privateSquareTool(){//privatestr="nothing";}privateclassContents{//privateprivatevoidf(){//privateSystem.out.println("InClassFirst'sinnerClassContentsmethodf()");}privatevoidgetStr(){System.out.println("First.str="+str);}}/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubSquareToolsquare=newSquareTool();SquareTool.Contentscontents=square.newContents();contents.f();contents.getStr();}}这个代码能跑过,里面的private限定符没起作用?

解决方案

解决方案二:
private表示在当前类中可以访问,如果main写在其他类中,就会编译出错。
解决方案三:
private构造函数可以用于单态模式
解决方案四:
private私有,本类里可以直接调用
解决方案五:
up被private修饰的方法,属性,构造方法,表示在当前类中可以访问。出去这个类会受到限制
解决方案六:
你的main是private修饰的构造方法的类的主方法,是可以在本类的方法中使用的。private修饰符就是为了修饰只限于本类用于的属性或方法。所以你这个类就不能在其它类中实例化了,但是把构造方法私有化可以使用单例模式的。
解决方案七:
构造方法私有化=单例模式
解决方案八:
你在别的类中用SquareToolsquare=newSquareTool();就不行了
解决方案九:
用private相当是屏蔽了构造器
解决方案十:
引用8楼cjhui的回复:

用private相当是屏蔽了构造器

对的其他类不可以直接访问了加锁了。。
解决方案十一:
[Quote=引用1楼xyz20003的回复:private表示在当前类中可以访问,如果main写在其他类中,就会编译出错。[/Quote]是这样的
解决方案十二:
构造方法被private就无法new出这个对象实例了
解决方案十三:
但是如果内部类的构造器是private的外部类依然可以new出它来外部类可以访问内部类private修饰的方法或字段

时间: 2025-01-19 18:31:22

private的构造函数能直接使用?的相关文章

C#中构造函数和析构函数的用法

函数 摘 要:构造函数与析构函数是一个类中看似较为简单的两类函数,但在实际运用过程中总会出现一些意想不到的运行错误.本文将较系统的介绍构造函数与析构函数的原理及在C#中的运用,以及在使用过程中需要注意的若干事项. 关键字:构造函数:析构函数:垃圾回收器:非托管资源:托管资源一.构造函数与析构函数的原理 作为比C更先进的语言,C#提供了更好的机制来增强程序的安全性.C#编译器具有严格的类型安全检查功能,它几乎能找出程序中所有的语法问题,这的确帮了程序员的大忙.但是程序通过了编译检查并不表示错误已经

C#构造函数和析构函数的用法

构造函数与析构函数是一个类中看似较为简单的两类函数,但在实际运用过程中总会出现一些意想不到的运行错误.本文将较系统的介绍构造函数与析构函数的原理及在C#中的运用,以及在使用过程中需要注意的若干事项. 一.构造函数与析构函数的原理 作为比C更先进的语言,C#提供了更好的机制来增强程序的安全性.C#编译器具有严格的类型安全检查功能,它几乎能找出程序中所有的语法问题,这的确帮了程序员的大忙.但是程序通过了编译检查并不表示错误已经不存在了,在"错误"的大家庭里,"语法错误"

详解C++中如何将构造函数或析构函数的访问权限定为private_C 语言

今天面试被问到了这个单例模式常用到的技术手段,下面进行分析:         很多情况下要求当前的程序中只有一个object.例如一个程序只有一个和数据库的连接,只有一个鼠标的object.通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?这意味着什么?         当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私有的,由于在class外

C#中构造函数和析构函数用法实例详解_C#教程

本文实例讲述了C#中构造函数和析构函数用法.分享给大家供大家参考,具体如下: 构造函数与析构函数是一个类中看似较为简单的两类函数,但在实际运用过程中总会出现一些意想不到的运行错误.本文将较系统的介绍构造函数与析构函数的原理及在C#中的运用,以及在使用过程中需要注意的若干事项. 一.构造函数与析构函数的原理 作为比C更先进的语言,C#提供了更好的机制来增强程序的安全性.C#编译器具有严格的类型安全检查功能,它几乎能找出程序中所有的语法问题,这的确帮了程序员的大忙.但是程序通过了编译检查并不表示错误

c++拷贝构造函数(深拷贝,浅拷贝)详解

一.什么是拷贝构造函数      首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=100; int b=a;     而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.  下面看一个类对象拷贝的简单例子.    #include<iostream> using namespace std; class CExample { private: int a; public: //构造函数 CExample(int b) { a=b; printf(&q

php重载数组操作符

在php中提供了许多接口用于实现一些很特定的功能,比如你想把一个对象当作array使用时,只需要实现ArrayAccess接口,当你想要foreach中能够使用一个对象时,只需要实现Iterator接口,下面给一个例子出来 class BtstoreRoot { /** * 根结点 * @var BtstoreElement */ static $root; } class BtstoreElement implements ArrayAccess, Iterator { /** * 当前所代表

PHP面向对象精要总结

 1 使用extends实现继承以及重载.魔术方法的含义 class B extends A 声明的时候B里可以没有A里的方法 调用的时候: $b=new B(); $b->A里的方法(); $b->A里的属性=1; $b->B里的方法(); $b->B里的方法(); 如果$a=new A(); 可以 $a->A里的方法(); $a->A里的属性=1; 不可以 $a->B里的方法(); $a->B里的方法();   重载:B继承A ,B里实现和A同名的方法属

MVC with PHP(二)

MVC with PHP(一)中的bug的问题是存在,最大的问题是日志系统的问题,等完成这这个介绍后我后把全部更正的程序源码打包出来,这里就暂时不做更改了.先来看看在application.class.php中是如何建立controller实例的: PHP代码:--------------------------------------------------------------------------------/** * 执行函数 * * 此类唯一对外的一个接口 **/ public f

《Effective Java》学习笔记(3)

笔记  四.类和接口 第12条:使类和成员的可访问能力最小     为了更好的实现信息隐藏,降低各模块的耦合度,尽可能地降低类和成员的访问能力是必须的.有一点特别关键,就是公有的静态final域几乎全部是错误的.客户可以修改这样的成员数组,应该改为私有的才是安全的. 第13条:支持非可变类 使一个类成为非可变类需要做到以下5点: 1.不能提供任何会修改对象的方法 2.保证没有可被子类覆写的方法,可以通过使这个类为final来达到 3.使所有的成员变量都是final 4.使所有的成员变量都为私有