Java 面向对象概念
面向对象概念
面向对象OOP
[Object-oriented programming] 是一种编程模式,面向对象是围绕数据或对象来组织软件设计的,而不是功能和逻辑。
面向对象是一个抽象的概念,它不同于面向过程那样通过功能和逻辑来实现软件的设计,面向对象依赖于类和对象这两个概念来完成软件的设计。
面向对象的优点在与减少代码的重复、代码可维护性高、数据管理方便
类
类即分类、类别,类是一个抽象的概念。
通过分类可以区分不同事物的种类比如:
- 人类,并不是指某一个人,而是指这个物种。
- 车,指的也只是车这个大类,并不是指具体的那一辆车。
- 电脑,指的一样是一个类别,而不是具体哪一台电脑。
- 学校,指的也是一个类别,清华北大985也是学校,为什么我上不了😭
所以类是一种具有相同特性与行为的事物的集合。
类是由 属性
、方法
构成的
- 属性:即表象、特征
- 方法:即行为、能力
假设我们要开发一款枪战游戏,我们需要先从整体上进行分类如:
人物/角色
类、枪类
人物具有的特性 角色名称
、生命值
、移动速度
枪具有的特征 枪名
、子弹数量
、射击速度
、杀伤值
人物具有的行为:开枪动作
、更换弹夹
、移动
完成了上面的步骤,再来进行代码的实现。
class Role {
String name;
double HP;
int move;
}
class Gun {
// 枪名
String name;
// 子弹数量
int bullet;
// 射击速度
double RateOfFire;
// 杀伤值
double Lethality;
}
对象
对象指的是某个真实存在的东西,如你这个人本身就是一个对象,因为你是真实存在的人,人类代表你所属的类,而你自己本身就是人类的对象。
还是以上面的枪战游戏为例
我们已经有了角色类
、枪类
我们现在来创建一个游戏角色,和一把枪
创建一个游戏角色对象:角色法外狂徒张三
,生命值 999
、移动速度10086
创建一个枪的对象:AK47
、子弹数量99999
、射击速度9999
、杀伤值999999
public class Game {
public static void main (String[] args) {
// 创建角色
Role zhangSan = null; // 创建一个空指针
zhangSan = new Role(); // 申请空间创建角色对象,并赋给变量 zhangsan
// 设置对象属性
zhangSan.name = "法外狂徒张三";
zhangSan.PH = 999;
zhangSan.move = 10086;
// 创建枪对象
Gun ak47 = new Gun();
// 设置枪属性
ak47.name = "AK47";
ak47.bullet = 99999;
ak47.rateOfFire = 9999;
ak47.lethality = 999999;
}
}
class Role {
String name;
double HP;
int move;
}
class Gun {
// 枪名
String name;
// 子弹数量
int bullet;
// 射击速度
double rateOfFire;
// 杀伤值
double lethality;
}
对象在内存中的存在形式
可以看到类对象也是拥有默认值的,当我们创建对象后不设置属性,那么这个属性的值会是这个数据类型的默认值。
这个默认值与数组一样:
byte
/short
/int
/long
整型:默认值0
float
/double
浮点型:默认值0.0
char
字符类型:默认值\u0000
boolean
布尔类型:默认值flase
String
字符串类型:默认值null
因为字符串实际上也是一个类,Java
中除了八大数据类型,其他都是属于引用类型。所以栈中记录的并不是字符串本身,而是记录这个字符串的内存地址,而字符串是存放在方法区中的常量池里【常量池,用于存放常量如字符串】。
而当我们创建对象的时候,如果方法区中没有加载这个类,那么JVM
会帮我们加载这个类的类属性、类方法。注:类加载只会加载一次,如果这个类加载信息已经在方法区中存在了,那么后续创建对象的时候不会重新加载。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具