基于JavaSwing坦克大战游戏的设计和实现
815
2025-04-01
类与对象
先来用一张图来说说类与对象包括什么:
类:类的定义、包、变量、权限修饰符、方法重载、参数传值、this关键字
对象:对象的定义、对象的创建格式及区别、对象属性和行为的访问、对象的引用比较和销毁
类
类是一组具有相同属性和行为的对象的抽象
举例看看:
public class Heroes { private String name; private String role; static int roleId; final static double PI = 3.1415926; public Heroes(String name, String role) { this.name = name; this.role = role; } public Heroes() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getRole() { return role; } public void setRole(String role) { this.role = role; } public void fight(String message) { int id = 0; System.out.println("fight..." + id + ":" + message); } public static void bloodReturning(String home) { System.out.println("回血:" + home); } }
包
Java 中使用 package 语句定义包,package 语句应该放在源文件的第一行,在每个源文件中只能有一个包定义语句,并且 package 语句适用于所有类型(类、接口、枚举和注释)的文件。定义包语法格式如下:
包的命名
Java包的命名规则如下:
包名全部由小写字母(多个单词也全部小写)
如果包名包含多个层次,每个层次用“.”分割
包名一般由倒置的域名开头,比如com. baidu,不要有www
自定义包不能以 java开头
包的使用
在要引用的类名前带上包名作为修饰符
com.dingli.edu.Person person = new com.dingli.edu.Person();
在文件开头使用import引用包中的类
import com.dingli.edu.Person;
在文件前使用import引用整个包
import com.dingli.edu.*;
这里列举一下java文档里的常用包
包
说明
java.lang
Java 的核心类库,包含运行 Java 程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、异常处理和线程类等,系统默认加载这个包
java.io
Java 语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出、过滤输入/输出流等
java.util
包含如处理时间的 Date 类,处理动态数组的 Vector 类,以及 Stack 和 HashTable 类
java.awt
构建图形用户界面(GUI)的类库,低级绘图操作 Graphics 类、图形界面组件和布局管理(如 Checkbox 类、Container 类、LayoutManger 接口等),以及用户界面交互控制和事件响应(如 Event 类)
java.awt.image
处理和操纵来自网上的图片的 Java 工具类库
java.wat.peer
很少在程序中直接用到,使得同一个 Java 程序在不同的软硬件平台上运行
java.net
实现网络功能的类库有 Socket 类、ServerSocket 类
java.lang.reflect
提供用于反射对象的工具
java.util.zip
实现文件压缩功能
java.awt.datatransfer
处理数据传输的工具类,包括剪贴板、字符串发送器等
java.sql
实现 JDBC 的类库
java.rmi
提供远程连接与载入的支持
java. security
提供安全性方面的有关支持
成员变量、局部变量、静态变量的区别
注意事项:
局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
成员变量
局部变量
定义的位置
类中,方法外
方法中,或者方法的形式参数
在类中,方法外
初始化值
有默认初始化值
无,先定义,赋值后才能使用
有默认初始化值
调用方式
对象调用
对象调用,类名调用
存储位置
堆中
栈中
方法区
生命周期
与对象共存亡
与方法共存亡
与类共存亡
别名
实例变量
类变量
权限修饰符区别
public
Protected
Default
private
同一个类
√
√
√
√
同一个包
√
√
√
子类
√
√
√
不同包
√
方法重载
就是在同一个类中,方法的名字相同,参数列表不同(顺序不同、个数不同、类型不同),实现相似的功能,与修饰符、返回值类型无关。我们会觉得方法调用的时候就像调用一个方法一样 。
看看下面的第一个sum()静态方法,里面的形参是int类型; 第二个重载就是都变了方法,形参是double类型;第三个是混合的参数类型。
public class OverLoad { public static void main(String[] args) { sum(5, 8); sum(4.5, 6.5); sum(1, 5, 2.3); } public static void sum(int a, int b) { int sum = a + b; System.out.println(sum); } public static void sum(double c, double d) { double sum = c + d; System.out.println(sum); } public static void sum(int e, int f, double g) { double sum = e + f + g; System.out.println(sum); } }
参数传值
8大基本数据类型,参数传递过程采用值拷贝的方式
public class Demo { public static void main(String[] args) { int a = 10; change(a); System.out.println("main方法中a的值:" + a); } public static void change(int a) { a = a * 2; System.out.println("change方法中a的值:" + a); } }
参数类型为引用类型,参数传递的过程采用引用拷贝的方式
public class Demo { public static void main(String[] args) { Test test = new Test(10); change(test); System.out.println("main方法中a的值:" + test.a); } public static void change(Test test) { test.a = test.a * 2; System.out.println("change方法中a的值:" + test.a); } } class Test { public int a; public Test(int a) { this.a = a; } }
this关键字
关键字this表示当前对象,引用对象自身。 可以用于访问实例的数据域, 尤其是实例变量和局部变量同名时,进行分辨。除此之外,可以在构造方法内部调用同一个类的其他构造方法 。
public class ThisTest { public String name; public int age; public ThisTest(String name, int age) { this.name = name; this.age = age; } public void say() { String name = “tom"; System.out.println("name:" + this.name); } public static void main(String[] args) { ThisTest thisTest = new ThisTest("1810", 20); thisTest.say(); } }
对象
对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象
对象的创建格式
格式一:声明并实例化对象
类名称对象名称=new类名称();
格式二:先声明对象,然后实例化对象
类名称对象名称=null;
对象名称=new类名称();
引用数据类型与基本数据类型最大的不同在于:引用数据类型需要内存的分配和使用。所以,关键字new的主要功能就是分配内存空间,也就是说,只要使用引用数据类型,就要使用关键字new来分配内存空间
两种对象创建格式的区别从内存角度来分析
(1)堆内存(heap):保存对象的属性内容。堆内存需要用new关键字来分配空间
(2)栈内存(stack):保存的是堆内存的地址
访问对象的属性和行为
public class Demo { int id = 12; public Demo() { } public void changeId() { id *= 2; System.out.println(id); } public static void main(String[] args) { Demo demo1 = new Demo(); Demo demo2 = new Demo(); demo2.id = 20; System.out.println("demo1的属性值:" + demo1.id); demo1.changeId(); System.out.println("demo2的属性值:" + demo2.id); demo2.changeId(); } }
对象的引用、比较和销毁
对象引用语法格式:类名引用对象名称
对象的比较:1、==运算符2、equals()方法
对象的销毁:对象的销毁利用的是Java中的垃圾回收机制
(1)对象引用超过其作用范围
(2)将对象赋值为null
关于JAVA类与对象大概就介绍到这里了,感恩能与大家在华为云遇见!希望能与大家一起在华为云社区共同成长。
Java 数据结构
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。