日期:2014-05-20  浏览次数:20719 次

public 构造方法 摘录 提问
如果一个类没有明确的构造方法,那么public类的默认构造   public,友好类的默认构造方法是友好的需要注意的是,如果一个public类定义声明的构造方法中没有public,那么在另外一个类使用该类创建对象时,使用的构造方法就不是public,创建对象就受到一定的限制。

上面不是说 "public类的默认构造方法是pulic "吗,为什么又说“如果一个public类定义声明的构造方法中没有public,那么在另外一个类使用该类创建对象时,使用的构造方法就不是public,创建对象就受到一定的限制。”?

------解决方案--------------------
那是在有构造函数的情况下,你没在函数前面加PUBLIC
------解决方案--------------------
public类的默认构造方法是pulic:是说你定义一个public类时,没有明确定义构造器,那么系统回提供一个默认的构造器,该构造器的访问属性是public,如:
public class DefaultConstructor {
int i = 0;
}
------------
果一个public类定义声明的构造方法中没有public,那么在另外一个类使用该类创建对象时,使用的构造方法就不是public,创建对象就受到一定的限制:是说你定义一个public类时,如果明确定义了该类的构造器,但是没有用public 关键字修饰该构造器,那么该构造器的访问权限是包访问权限,假定这个类类名是“DefineConstructor“;当你在其他包中定义类时,需要创建类“DefineConstructor”的实例,那么就会失败,如下代码:
//定义类DefineConstructor
package basic;

public class DefineConstructor {
//构造器没有用public关键字修饰,是默认的包访问权限
DefineConstructor(){
System.out.println( "oklala ");
}
}

//定义测试类
package test;

public class TestClass{
basic.DefineConstructor iobj = new basic.DefineConstructor();
}

这个时候就会报错,没有足够的权限创建这个类的对象
-------------
其实,创建一个类的对象就是调用这个类的构造器,构造器的访问权限决定了你什么情况下能创建这个类的对象,比如,一个类的构造器被关键字private修饰,那么你其他的地方永远不可能创建这个类的对象。