今天学习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
分享到:
相关推荐
5. **JPA(Java Persistence API)**:作为Java EE的一部分,JPA提供了一种规范来管理应用程序的持久化数据。它可以与不同的持久化供应商(如Hibernate)配合使用。 6. **微服务架构**:现代企业级应用往往采用...
Alloy提供了一种现代、扁平化的界面风格,而Liquid则以流畅、动态的设计著称,它们都可以为Java Swing应用带来独特的视觉体验。 其次,"7种另类风格和实例"可能包含了各种创新或非传统的皮肤设计,这些设计可能具有...
1. **服务器端口设置**:`HttpProxy` 类可能会有一个初始化方法,设置监听的端口号。 2. **Socket通信**:使用 `java.net.ServerSocket` 创建服务器套接字来监听客户端连接。 3. **请求解析**:当客户端连接建立后,...
1. **Java Socket通信**:Java的Socket类提供了TCP/IP通信的基础,客户端通过Socket实例连接到服务器的指定端口,创建一个双向通道。ServerSocket类则在服务器端监听特定端口,等待客户端的连接请求。 2. **多线程*...
1. **面向对象编程**:Java是一种面向对象的语言,其源码中将涵盖类、对象、封装、继承、多态等基本概念。通过阅读源码,你可以看到如何定义类,如何创建对象,以及如何通过继承和多态来实现代码的复用和扩展。 2. ...
7. **实例化和使用**:在应用程序中,开发者可以通过实例化这个分页类,然后调用其方法来实现数据库的分页操作。 8. **模板支持**:为了方便展示,类可能还提供了一些辅助方法,帮助生成HTML代码,如页码链接,以...
UML是一种图形化的建模语言,用于描述、可视化、构造和文档化软件系统,而Java是一种强大的、跨平台的编程语言,特别适合于面向对象的开发。 首先,让我们深入理解UML。UML提供了九种主要的图来表示不同的方面,...
源码中可能包含了`Thread`类的实例化、线程同步(如`synchronized`关键字、`wait()`、`notify()`和`notifyAll()`方法)以及线程池的使用(如`ExecutorService`和`ThreadPoolExecutor`)。 2. **网络编程**:Java的`...
9. **枚举与注解**:Java枚举提供了一种安全的常量表示方式,而注解则是一种元数据,可以用来提供编译时或运行时的信息。源代码将包含这两个特性在实际项目中的应用。 10. **Java虚拟机(JVM)**:源代码可能还涉及...
3.2 简单数据类型的实例化——变量与常量 3.3 整型常量和变量 3.4 浮点型常量和变量 3.5 字符型常量和变量 3.6 布尔型常量和变量 3.7 各类型数据间的优先关系和相互转换 第4章 运算符与表达式 4.1 算术...
Java技术是计算机编程领域中的一个核心部分,尤其在企业级应用开发中占据着主导地位。这个压缩包包含的"543篇JAVA技术"资源,很可能是大量的文章、教程、代码示例,涵盖了Java语言的基础到高级应用,以及一些相关的...
在这个实例中,我们关注的是Apache Tapestry,一个开源的Java Web应用程序框架。Tapestry以其组件化和声明式编程模型而闻名,它允许开发者创建高度模块化的Web应用,减少代码量并提高可维护性。"betterstore"可能是...
单例模式是设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在Java或C#等面向对象语言中,实现单例模式可以避免多个实例之间的通信混乱,提高程序的效率和资源管理。 在Windows环境下,通常...
2. **JavaServer Faces (JSF)**:一种用于构建用户界面的MVC框架,简化了Web组件的开发。JSF的事件驱动模型和组件库使得界面开发更为高效。 3. **Java Persistence API (JPA) & Hibernate**:JPA是Java EE的一部分...
Servlet是Java编程语言中的一个接口,用于扩展服务器的功能。它们处理HTTP请求并生成响应。JSP则是用于创建动态网页的视图技术,它将HTML代码和Java代码混合在一起,使得开发者可以轻松地实现页面动态生成。 ### ...
面向对象(Object-Oriented,简称OO)是一种编程范式,它基于“对象”的概念,通过将数据和处理数据的方法封装在一起,实现模块化的、可重用的代码设计。在面向对象编程中,我们通常会涉及到类(Class)、对象...
每个类都封装了自己的属性和行为,通过实例化这些类的对象来构建游戏世界。 3. **Img.java**:可能包含对游戏中图像资源的处理,如加载、显示和管理图片,这在游戏开发中是非常关键的一部分,用于创建视觉效果。 4...
标题中的“一个使用UDP协议写的围棋”表明这是一个基于UDP(User Datagram Protocol)网络通信协议...通过阅读和分析源代码,我们可以深入理解如何利用UDP进行实时数据交换,以及如何在Java中构建一个完整的棋类游戏。
2. 继承:继承允许一个类(子类)从另一个类(父类)中获取属性和方法,减少了代码重复,提高了代码的复用性。子类可以覆盖或扩展父类的特性,以满足特定需求。这有助于构建层次化的类结构,便于系统维护和扩展。 3...
4. 在Java应用程序中实例化这些类,读取输入,调用解析方法进行解析,并执行相应的语义动作。 通过这些步骤,开发者可以创建出自己的语言解析器,从而处理特定格式的数据或指令。对于那些需要处理复杂语言结构或...