在网上见过这道小题,正好寝室的兄弟们在学,借机会整理下!
题目是这样的:
1.定义一个SigCls.java;
2.SigCls只能存在一个实例;
3.在构造器中初始化两个成员属性;
4.编写TestSigCls.java测试;
分析:
如果构造一个类,它只能存在一个实例,那它的构造函数一定不能被外部访问,也就是说它的构造函数应该是private的.
如果构造函数是private的,外部不能实例化,那就需要在类内部定义一个方法,用来创建这个实例.
既然只能存在一个实例,那么可以把这个唯一的实例定义成静态的,这样静态成员只初始化一次.
代码:
//SigCls.java文件
public class SigCls
{
private String name;
private int age;//两个成员属性
private static SigCls inst;//声明静态实例
private SigCls(String aName, int aAge) {
name = aName;
age = aAge;//初始化两个成员属性
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public static SigCls getInstance() {
if (inst == null)
{
System.out.println("none");
inst = new SigCls("xiaozhang", 19);//初始化实例
return inst;
}
else
{
System.out.println("Sig");
return inst;
}
}
}
//TestSigCls.java文件
public class TestSigCls
{
public static void main(String[] args)
{
SigCls sc1;
SigCls sc2;
sc1 = SigCls.getInstance();
sc2 = SigCls.getInstance();
System.out.println(sc1.getName());
System.out.println(sc2.getName());
}
}
应该还有其他的方法,有待研究!
分享到:
相关推荐
抽象成员只能存在于抽象类中 抽象类可以有非抽象成员(侧重族群的概念) 抽象类的子类必须实现抽象方法体 抽象类you构造函数 抽象类只能用作基类,无法实例化(new) 抽象类不能被实例化。 抽象类存在的意义: 1.抽象...
单例模式:简单的说,一个对象只负责一个特定的任务。 单例类: 1.构造函数需要标记为private,单例类不能再其他类中实例化,只能被其自身实例化 2.拥有一个保存类的实例...如果系统中需要一个类来全局控制某些配置
•如果一个类始终只能创建一个对象,称为单例类。须符合以下几个条件: –1.我们把该类的构造器使用Private修饰,从而把该 类的所有构造器隐藏起来。 –2.则需要提供一个public方法作为该类的访问点,用于创建...
并不是 所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象, 这样的类就是抽象类。抽象类往往用来表征我们在对问题领域进行分析、 设计中得出的抽象概念, 是对一系列看上去不同,...
•一个类里可以包含三种最常见的成员:构造器、属性、方法。 定义属性的格式语法 •[修饰符] 属性类型 属性名 [= 默认值]; 定义方法的格式语法 •[修饰符] 方法返回值类型 方法名(形参列表) {….方法...
构造函数与析构函数是一个类中看似较为简单的两类函数,但在实际运用过程中总会出现一些意想不到的运行错误。本文将较系统的介绍构造函数与析构函数的原理及在C#中的运用,以及在使用过程中需要注意的若干事项。 一...
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 15、error和exception有什么区别? error 表示恢复不是...
也不能在类的构造函数中初始化该成员,因为静态数据成员为类的各个对象共享,否则每次创建一个类的对象则静态数据成员都要被重新初始化。 静态成员不可在类体内进行赋值,因为它是被所有该类的对象所
修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被...
指在整个系统生命期中,一个类最多只能有一个实例(instance)存在,使得该实例的唯一性(实例是指一个对象指针) , 比如:统计在线人数 在单例类里,又分为了懒汉式和饿汉式,它们的区别在于创建实例的时间不同: 懒汉式 : ...
抽象类中可以定义非抽象的方法,但如果一个类中有抽象方法,则这个类必须被定义成抽象类。抽象类中有构造方法,但是没有抽象的构造方法。构造方法的存在完全是为了继承关系而存在。 与之形成对比的就是接口,...
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 18、error和exception有什么区别? error 表示恢复...
现在需要您写一个数据库连接字符串,用以连接AllWin上SQL SERVER中的一个名为PubBase实例的Test库。请问,应该选择下面哪一个字符串?( B ) A. “Server=AllWin;Data Source=PubBase;Initial Catalog=Test;...
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 如果我们要让类在一个虚拟机中只能产生一个对象: 将类的构造器的访问...
抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是...在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。 接口: 接口(英文:
也就是说,一个类的直接基类只能有一个。当类与类之间实现继承的时候,子类可以将它的直接基类的所有成员当做自己的成员,除了类的静态构造方法、实例构造方法和析构方法。但是,虽然基类的所有成员都可以当做子类的...
1、什么是单例模式 在架构设计时,某些类在整个系统生命周期中最多只能有一个对象存在 ( Single ... 思考:如何定义一个类,使得这个类最多只能创建一个对象? 分析:因为对象是由构造函数创建的,所以我们应该
在Java中,一个类只能继承一个类,但是却可以实现(implements)多个接口. 如果实现接口的类不是抽象类的话,则该子类必须复写接口中所有的抽象方法. 例如如下代码示例: view plaincopy to clipboardprint? interface ...
也是我们实例出来的对象名称,一个类可以实例出多个对象,每个对象都是独立的,上面的代码相 当于实例出来3 个人来,每个人之间是没有联系的,只能说明他们都是人类,每个人都有自己的姓 名,性别和年龄的属性,每个...