Java面向对象实例:单例模式与多线程示例

需积分: 41 3 下载量 62 浏览量 更新于2024-11-18 收藏 10KB TXT 举报
"本资源提供了一系列Java编程的经典实例,主要涉及面向对象编程(Object-Oriented Programming, OOP)的核心概念。首先,我们学习了如何使用接口(Interface)来定义行为规范,例如`Animal`接口,其中包含一个抽象方法`eat(Food food)`,这个接口可以被`Cat`和`Dog`类实现,体现了多态性。`Cat`和`Dog`类分别实现了各自的吃食行为,每个类的方法参数类型为`Food`,这是一种简单的封装和继承的体现。 `Food`是一个抽象类,它包含了一个受保护的成员变量`name`,以及用于获取和设置名称的方法。`Fish`和`Bone`是`Food`类的两个具体实现,它们通过继承扩展了基础的`Food`行为。 接下来,`Feeder`类是一个示例用例,它有一个`feed(Animal animal, Food food)`方法,用于喂养指定的动物,接受一个`Animal`类型的参数和一个`Food`类型的参数。在`TestFeeder`类的`main`方法中,我们创建了一个`Feeder`对象和不同类型的动物和食物实例,演示了如何在多态的上下文中调用`eat`方法。 这部分代码展示了Java中的单例模式(Singleton Pattern),尽管这里没有明确的单例实现,但通过实例化`Feeder`类一次,我们可以理解其潜在的单例行为。同时,它还包含了多线程的基础应用,虽然没有显式地引入并发,但通过在主线程中执行`feed`操作,我们可以预见到在实际场景中可能涉及到的并发控制。 此外,这段代码也展示了序列化(Serialization)的概念,虽然没有直接进行序列化操作,但`Food`类的成员变量`name`可以通过序列化机制在对象间传递,尤其是在分布式系统或者网络通信中。 这个资源涵盖了Java面向对象编程、接口设计、多态、继承、抽象类、具体类以及序列化的基础知识,适合初学者通过实例来理解和实践这些核心概念。"
2019-12-15 上传
160个项目开发实例,聊天项目,小游戏适和新手学习(项目采用GBK编码)。 import java.util.*; import java.io.*; import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*; class Gobang extends JFrame implements Runnable, ActionListener { final static int Player=1; final static int AI =-1; ClassLoader cl = this.getClass().getClassLoader(); Toolkit tk = Toolkit.getDefaultToolkit(); int length=14, game_state, winner, check, step; int grid[][] = new int[length][length]; int locX, locY /* 囱竚 */, count /* 硈囱计 */, x, y /* 既竚 */, displace_x=0, displace_y=0 /* 簿秖 */, direction; ArrayList steps = new ArrayList(); /* 癘魁囱˙ */ JPopupMenu control_menu = new JPopupMenu(); /* 龄匡虫 */ JMenuItem[] command = new JMenuItem[4]; String[] command_str={"囱", "郎", "弄郎", "秨"}; int[][] dir = { {-1, -1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 1}, {1, -1}, {1, 0}, {1, 1} }; boolean[] dir2 = new boolean[8]; boolean turn; String message; final JDialog dialog = new JDialog(this, "叫匡", true); Font font=new Font("new_font", Font.BOLD, 20); Grid grids[][] = new Grid[length][length]; Image white= tk.getImage(cl.getResource("res/white.png")); Image black= tk.getImage(cl.getResource("res/black.png")); Image title= tk.getImage(cl.getResource("res/title.png")); Image temp; JPanel boardPanel, bigpanel; JRadioButton[] choice = new JRadioButton[2]; final static int Start =0; final static int Select =1; final static int Playing =2; final static int End =3; final static int nil=-1; /* 礚よ */ final static int oblique_1 =0; /* オ */ final static int oblique_2 =1; /* オ */ final static int horizontal =2; /* 绢 */ final static int vertical=3; /*  */ Gobang() { super("き囱"); boardPanel = new JPanel(); boardPanel.setLayout(new GridLayout(length, length, 0, 0)); boardPanel.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); for(int i=0; i<length; i++) for(int j=0; j<length; j++) {