A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张正强 中级黑马   /  2013-3-31 09:25  /  1529 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张正强 于 2013-3-31 20:25 编辑

“当类T只声明了私有实例构造函数时,则在T的程序外部不可以从T派生出新的类,也比可以直接创建T的任何实例”这句话是不是说如果T类申明的时候是public,但是仅有一个private构造函数时,这个类其实是private的呢???

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

5 个回复

倒序浏览
以下的话是我从网上找到的  看看能不能帮到你 我现在也在纠结面向对象这一块

当类 T 只声明了私有实例构造函数时,则在 T 的程序文本外部,既不可能从 T 派生出新的类,也不可能直接创建 T 的任何实例。因此,如果欲设计一个类,它只包含静态成员而且有意使它不能被实例化,则只需给它添加一个空的私有实例构造函数,即可达到目的。例如:
public class Trig
{
   private Trig() {}      // Prevent instantiation
   public const double PI = 3.14159265358979323846;
   public static double Sin(double x) {...}
   public static double Cos(double x) {...}
   public static double Tan(double x) {...}
}
Trig 类用于将相关的方法和常数组合在一起,但是它不能被实例化。因此它声明了单个空的私有实例构造函数。若要取消默认构造函数的自动生成,必须至少声明一个实例构造函数。

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
不是的.
public修饰类是声明,类是公有的,是可以被访问的。
一个公有的类,内部只有一个private修饰的构造函数,只是说明这个类不能被实例化。
回复 使用道具 举报
像这种不能被实例化的类,又不能像static类一样直接调用,那要他有什么用?如果用到,会在什么时候会用到?
回复 使用道具 举报
共享一个实例的时候吧
回复 使用道具 举报
张正强 发表于 2013-3-31 09:58
像这种不能被实例化的类,又不能像static类一样直接调用,那要他有什么用?如果用到,会在什么时候会用到? ...

我理解错了,它是可以从外部直接调用类里的静态成员,回复之前就应该先敲一下代码的,汗!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马