当前位置: 首页 > java >正文

JavaSE核心知识点02面向对象编程02-01(类与对象)

🤟致敬读者

  • 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉

📘博主相关

  • 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息

文章目录

    • JavaSE核心知识点02面向对象编程02-01(类与对象)
      • **一、类(Class):设计蓝图**
        • 1. **什么是类?**
        • 2. **如何定义一个类?**
      • **二、对象(Object):类的实例**
        • 1. **什么是对象?**
        • 2. **如何创建对象?**
      • **三、实例变量 vs 静态变量**
        • 1. **实例变量(对象级别)**
        • 2. **静态变量(类级别)**
      • **四、封装(Encapsulation)**
        • 1. **为什么要封装?**
        • 2. **实现封装的步骤:**
      • **五、构造方法(Constructor)**
        • 1. **什么是构造方法?**
        • 2. **默认构造方法**
        • 3. **自定义构造方法**
      • **六、继承(Inheritance)**
      • **七、对象的内存分配**
      • **八、常见误区**
      • **九、最佳实践**
      • **十、练习题目**


📃文章前言

  • 🔷文章均为学习工作中整理的笔记。
  • 🔶如有错误请指正,共同学习进步。

JavaSE核心知识点02面向对象编程02-01(类与对象)

类(Class)对象(Object) 是面向对象编程(OOP)的核心基础。以下用通俗易懂的方式,结合代码示例和生活中的例子,帮你彻底掌握它们!


一、类(Class):设计蓝图

1. 什么是类?
  • 是对象的模板或蓝图,定义了对象的 属性(数据)行为(方法)
  • 例如:设计一辆汽车前,你需要图纸(类),图纸规定了汽车的品牌、颜色(属性)和启动、刹车(方法)。
2. 如何定义一个类?
public class Dog {// 成员变量(属性)String name;int age;// 方法(行为)void bark() {System.out.println(name + "汪汪叫!");}
}
  • 成员变量:描述对象的属性(如name, age)。
  • 方法:描述对象能做什么(如bark())。

二、对象(Object):类的实例

1. 什么是对象?
  • 对象是根据类创建的具体实例,占用内存空间。
  • 例如:根据Dog类可以创建具体的狗对象(如“小黑,3岁”)。
2. 如何创建对象?
public class Main {public static void main(String[] args) {// 创建Dog类的对象Dog myDog = new Dog();// 设置对象的属性myDog.name = "小黑";myDog.age = 3;// 调用对象的方法myDog.bark();  // 输出:小黑汪汪叫!}
}
  • new关键字:在内存中分配空间,创建对象。
  • .操作符:访问对象的属性和方法。

三、实例变量 vs 静态变量

1. 实例变量(对象级别)
  • 每个对象拥有独立的副本。
  • 例如:每只狗的nameage不同。
2. 静态变量(类级别)
  • static修饰,所有对象共享同一份数据。
  • 例如:统计所有狗的数量。
public class Dog {String name;int age;static int totalDogs = 0;  // 静态变量public Dog() {totalDogs++;  // 每创建一只狗,总数+1}
}// 使用:
Dog dog1 = new Dog();
Dog dog2 = new Dog();
System.out.println(Dog.totalDogs);  // 输出2(通过类名访问)

四、封装(Encapsulation)

1. 为什么要封装?
  • 保护数据,防止外部直接修改。
  • 例如:狗的年龄不能为负数,通过方法控制。
2. 实现封装的步骤:
  1. 私有化成员变量:用private修饰。
  2. 提供公共方法gettersetter
public class Dog {private String name;private int age;// Getter方法(读取属性)public String getName() {return name;}// Setter方法(设置属性)public void setAge(int age) {if (age >= 0) {  // 校验合法性this.age = age;} else {System.out.println("年龄不能为负数!");}}
}// 使用:
Dog dog = new Dog();
dog.setAge(-1);  // 输出:年龄不能为负数!

五、构造方法(Constructor)

1. 什么是构造方法?
  • 用于初始化对象,在new时自动调用。
  • 方法名与类名相同,没有返回类型。
2. 默认构造方法
  • 如果类中没有定义构造方法,Java会提供默认的无参构造方法。
  • 例如:Dog dog = new Dog();
3. 自定义构造方法
public class Dog {private String name;private int age;// 自定义构造方法public Dog(String name, int age) {this.name = name;this.age = age;}
}// 使用:
Dog myDog = new Dog("小黑", 3);  // 直接初始化属性

六、继承(Inheritance)

(先简单了解,后续可深入学习)

  • 子类继承父类的属性和方法,实现代码复用。
public class Animal {  // 父类void eat() {System.out.println("动物吃东西");}
}public class Dog extends Animal {  // 子类void bark() {System.out.println("狗叫");}
}// 使用:
Dog dog = new Dog();
dog.eat();  // 继承自Animal类

七、对象的内存分配

  • 栈内存:存储对象的引用变量(如Dog myDog)。
  • 堆内存:存储实际对象的数据(通过new分配)。
Dog dog1 = new Dog();  // dog1引用指向堆中的对象
Dog dog2 = dog1;       // dog2和dog1指向同一个对象

八、常见误区

  1. 混淆类和对象

    • 类:Dog(设计图)。
    • 对象:new Dog()(具体的狗)。
  2. 误用静态变量

    • 静态变量属于类,不要通过对象访问(用类名.变量名)。

九、最佳实践

  1. 单一职责原则:一个类只做一件事。
  2. 合理封装:尽量将成员变量设为private
  3. 优先使用实例变量:除非需要共享数据,否则不用static

十、练习题目

  1. 定义一个Student类,包含姓名、学号、年龄属性,并提供方法打印学生信息。
  2. 创建一个BankAccount类,实现存款、取款、查询余额功能,并保证余额不被直接修改。

通过以上内容,你已经掌握了Java类与对象的核心概念!接下来可以尝试编写小项目(如学生管理系统),巩固知识!如果有疑问,随时问我哦 😊


📜文末寄语

  • 🟠关注我,获取更多内容。
  • 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
  • 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
  • 🔵​加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
  • 🟣点击下方名片获取更多内容🍭🍭🍭👇

http://www.xdnf.cn/news/4746.html

相关文章:

  • Ubuntu 安装 Nginx
  • networkmanager 和 resolv.conf 可能有覆盖需要配置DNS
  • OpenHarmony平台驱动开发(八),MIPI CSI
  • 旧版 Flutter 写的项目, 想要在新的环境上运行?
  • Kotlin 遍历
  • Spring普通配置类 vs 自动配置类-笔记
  • USRP B210 TX_IQ处理
  • Ceph PG unfound/lost 问题排查与解决
  • 记录Token反序列化OAuth2Authentication(主要是直接存储用户信息的UserDetails )
  • [matlab]private和+等特殊目录在新版本matlab中不允许添加搜索路径解决方法
  • 医院信息集成平台是什么?怎么促进医院信息化建设?
  • sui在windows虚拟化子系统Ubuntu和纯windows下的安装和使用
  • 皇冠CAD(CrownCAD)建模教程:小型风力发电机
  • [逆向工程]什么是HOOK(钩子)技术(二十一)
  • MySQL回表详解!
  • 视频添加字幕脚本分享
  • AI学习路径
  • GrassRoot备份项目
  • 剖析 FFmpeg:从基本功能到过滤器,实现音视频处理的灵活性
  • python编译exe执行时报错:OSError:[WinError6]句柄无效
  • http协议理解
  • LLM 论文精读(三)Demystifying Long Chain-of-Thought Reasoning in LLMs
  • Qt 编译 sqldrivers之psql
  • Linux中的防火墙
  • 【RAG】indexing 中的 Hierarchical Indexing(分层索引)
  • Matlab 四分之一车体被动和模糊控制对比
  • 文件包含 任意文件读取
  • B站搜索关键词全攻略:掌握B站搜索关键词的运作机制
  • 深度学习-160-Dify工具之从模板创建应用示例
  • 评论系统表结构设计--简单模型