public class CompanyTest
{
static String companyName;
private CompanyTest(String companyName )
{
this.companyName = companyName;
}
public String getCompany()
{
return companyName;
} public static void main(String[]args)
{
Company com = new Company("chinaSoft");
System.out.println(com.getCompany()); }
}我把构造函数设计为了私有
应该怎么在类的外部再创建一个对象进行测试
最后得到的都是同一个实例
{
static String companyName;
private CompanyTest(String companyName )
{
this.companyName = companyName;
}
public String getCompany()
{
return companyName;
} public static void main(String[]args)
{
Company com = new Company("chinaSoft");
System.out.println(com.getCompany()); }
}我把构造函数设计为了私有
应该怎么在类的外部再创建一个对象进行测试
最后得到的都是同一个实例
如果getCompany()就是那个获取实例的方法,那么这个方法应该是静态的,而它他是获取那个实例的唯一入口,就靠他保证“唯一”。还有,那唯一的一份静态对象不是应该在构造函数中初始化的。构造函数初始化的不是静态数据,仍然是类本身的非静态数据,该怎样还怎样,只是构造函数变成了private的而已。
//唯一一分静态私有实例,但由于处于类内部,可以调用私有构造函数。
private static Company instance = new Company("Mircosoft"); //一般变量。
private String companyName; // 一般函数。
public String getCompanyName() {
return companyName;
} // 私有构造函数,外界没法调用。
private Company(String companyName) {
this.companyName = companyName;
} //靜态方法,返回那唯一的一份实例。
public static Company getCompanyInstance() {
return instance;
}
}//在类的内部测度单态模式没意义,类内部啥都能访问。
//应该另外写一个新的类来测试(如果前面那个也是public类,那这个应该写在另一个文件中):
public class CompanyTest {
public static void main(String args[]) {
System.out.println(Company.getCompanyInstance().getCompanyName());
}
}
如要其不变,可以用static的吧。
你要用别的类调用才不能调用。