`

java中实例化一个类的一种另类方法

阅读更多

今天学习J2SE,学习了另一种类的构造方式,在调试的过程中有自己的一些心得。代码如下:

 

public class Quest {
	int i = 0;
	//注意这里new了一个静态的Quest类
	private static Quest q = new Quest();
	
	//注意这个构造方法是private访问属性
	private Quest() {
		this.i = 2;	
	}
	
	//注意这个方法具有static属性
	public static Quest getQ(){
		//不能写成return this.q;
		return q;
	}
	
	//用于测试	
	public static void main(String[] akg) {
		System.out.println(Quest.getQ().i);
	}
 
}

 有以下心得:

1.类的构造不仅仅可以通过new来构造,还有其它很多构造形式。

2.以上Quest类的构造方法定义为private属性,在其它类中无法通过new调用Quest类的构造方法,从而禁止了其它类构造新的Quest类。

这样做显然有一个用意:使得其它类只能通过getQ()方法来获取Quest对象,而且获取的Quest对象是static属性的,那么就保证了Quest对象具有全局性,每次获取都是Quest类的同一个实例化对象,这个性质保证了这个类至始至终都只有一个实例化对象。

3.有一点需要注意:在代码的14行中,不能习惯性的写成return this.q;

在编译时会出错:无法在静态上下文引用非静态变量this

分享到:
评论

相关推荐

    《企业级Java开发与架构》实例代码

    5. **JPA(Java Persistence API)**:作为Java EE的一部分,JPA提供了一种规范来管理应用程序的持久化数据。它可以与不同的持久化供应商(如Hibernate)配合使用。 6. **微服务架构**:现代企业级应用往往采用...

    Java Swing皮肤样式大全(全56种经典).zip

    Alloy提供了一种现代、扁平化的界面风格,而Liquid则以流畅、动态的设计著称,它们都可以为Java Swing应用带来独特的视觉体验。 其次,"7种另类风格和实例"可能包含了各种创新或非传统的皮肤设计,这些设计可能具有...

    Java代理服务器的实现

    1. **服务器端口设置**:`HttpProxy` 类可能会有一个初始化方法,设置监听的端口号。 2. **Socket通信**:使用 `java.net.ServerSocket` 创建服务器套接字来监听客户端连接。 3. **请求解析**:当客户端连接建立后,...

    java 网络围棋

    1. **Java Socket通信**:Java的Socket类提供了TCP/IP通信的基础,客户端通过Socket实例连接到服务器的指定端口,创建一个双向通道。ServerSocket类则在服务器端监听特定端口,等待客户端的连接请求。 2. **多线程*...

    《Java2核心技术卷I》配套源码

    1. **面向对象编程**:Java是一种面向对象的语言,其源码中将涵盖类、对象、封装、继承、多态等基本概念。通过阅读源码,你可以看到如何定义类,如何创建对象,以及如何通过继承和多态来实现代码的复用和扩展。 2. ...

    一个通用的数据库分页类

    7. **实例化和使用**:在应用程序中,开发者可以通过实例化这个分页类,然后调用其方法来实现数据库的分页操作。 8. **模板支持**:为了方便展示,类可能还提供了一些辅助方法,帮助生成HTML代码,如页码链接,以...

    Java与UML面向对象程序设计的源码

    UML是一种图形化的建模语言,用于描述、可视化、构造和文档化软件系统,而Java是一种强大的、跨平台的编程语言,特别适合于面向对象的开发。 首先,让我们深入理解UML。UML提供了九种主要的图来表示不同的方面,...

    《Java2核心技术卷II》配套源码

    源码中可能包含了`Thread`类的实例化、线程同步(如`synchronized`关键字、`wait()`、`notify()`和`notifyAll()`方法)以及线程池的使用(如`ExecutorService`和`ThreadPoolExecutor`)。 2. **网络编程**:Java的`...

    《精通JAVA核心技术》 源代码

    9. **枚举与注解**:Java枚举提供了一种安全的常量表示方式,而注解则是一种元数据,可以用来提供编译时或运行时的信息。源代码将包含这两个特性在实际项目中的应用。 10. **Java虚拟机(JVM)**:源代码可能还涉及...

    vc++6.0 程序设计学与用教程

    3.2 简单数据类型的实例化——变量与常量 3.3 整型常量和变量 3.4 浮点型常量和变量 3.5 字符型常量和变量 3.6 布尔型常量和变量 3.7 各类型数据间的优先关系和相互转换 第4章 运算符与表达式 4.1 算术...

    543篇JAVA技术

    Java技术是计算机编程领域中的一个核心部分,尤其在企业级应用开发中占据着主导地位。这个压缩包包含的"543篇JAVA技术"资源,很可能是大量的文章、教程、代码示例,涵盖了Java语言的基础到高级应用,以及一些相关的...

    tapestry实例(betterstore)

    在这个实例中,我们关注的是Apache Tapestry,一个开源的Java Web应用程序框架。Tapestry以其组件化和声明式编程模型而闻名,它允许开发者创建高度模块化的Web应用,减少代码量并提高可维护性。"betterstore"可能是...

    Single Instance of an Application Class (21KB)

    单例模式是设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在Java或C#等面向对象语言中,实现单例模式可以避免多个实例之间的通信混乱,提高程序的效率和资源管理。 在Windows环境下,通常...

    《JAVA WEB服务应用开发详解》代码

    2. **JavaServer Faces (JSF)**:一种用于构建用户界面的MVC框架,简化了Web组件的开发。JSF的事件驱动模型和组件库使得界面开发更为高效。 3. **Java Persistence API (JPA) & Hibernate**:JPA是Java EE的一部分...

    J2EE全实例教程 doc格式

    Servlet是Java编程语言中的一个接口,用于扩展服务器的功能。它们处理HTTP请求并生成响应。JSP则是用于创建动态网页的视图技术,它将HTML代码和Java代码混合在一起,使得开发者可以轻松地实现页面动态生成。 ### ...

    oo 面向对象action

    面向对象(Object-Oriented,简称OO)是一种编程范式,它基于“对象”的概念,通过将数据和处理数据的方法封装在一起,实现模块化的、可重用的代码设计。在面向对象编程中,我们通常会涉及到类(Class)、对象...

    手机炸弹人源码

    每个类都封装了自己的属性和行为,通过实例化这些类的对象来构建游戏世界。 3. **Img.java**:可能包含对游戏中图像资源的处理,如加载、显示和管理图片,这在游戏开发中是非常关键的一部分,用于创建视觉效果。 4...

    一个使用UDP协议写的围棋

    标题中的“一个使用UDP协议写的围棋”表明这是一个基于UDP(User Datagram Protocol)网络通信协议...通过阅读和分析源代码,我们可以深入理解如何利用UDP进行实时数据交换,以及如何在Java中构建一个完整的棋类游戏。

    面向对象编程例子1

    2. 继承:继承允许一个类(子类)从另一个类(父类)中获取属性和方法,减少了代码重复,提高了代码的复用性。子类可以覆盖或扩展父类的特性,以满足特定需求。这有助于构建层次化的类结构,便于系统维护和扩展。 3...

    javacc

    4. 在Java应用程序中实例化这些类,读取输入,调用解析方法进行解析,并执行相应的语义动作。 通过这些步骤,开发者可以创建出自己的语言解析器,从而处理特定格式的数据或指令。对于那些需要处理复杂语言结构或...

Global site tag (gtag.js) - Google Analytics