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

【java】类和对象

普通java类和javabean类的区别:

普通 Java 类

普通 Java 类就是一个简单的类,它可以有属性(字段)和方法,但没有特别的规范要求。比如:

java

public class Person {
    // 属性
    String name;
    int age;

    // 方法
    void sayHello() {
        System.out.println("Hello, my name is " + name);
    }
}

这个类是一个普通的 Java 类,它的属性是直接暴露的,没有通过 getter 和 setter 方法来访问。


JavaBean 类

JavaBean 类是一种特殊的 Java 类,它遵循一些特定的规范。以下是 JavaBean 类的特点:

  1. 属性是私有的(private

    • 属性不能直接访问,必须通过方法(getter 和 setter)来访问。

  2. 提供公共的 getter 和 setter 方法

    • getter 方法用于获取属性的值。

    • setter 方法用于设置属性的值。

  3. 有一个公共的无参构造方法

    • 可以通过 new 类名() 的方式创建对象。

以下是一个 JavaBean 类的例子:

java

public class Person {
    // 1. 属性是私有的
    private String name;
    private int age;

    // 2. 公共的无参构造方法
    public Person() {
    }

    // 3. 公共的 getter 和 setter 方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

JavaBean 类和普通 Java 类的区别

特性普通 Java 类JavaBean 类
属性访问权限可以是 publicprivate 等属性必须是 private
属性访问方式可以直接访问属性(如果属性是 public必须通过 getter 和 setter 方法访问
构造方法可以有任意构造方法必须有一个公共的无参构造方法
用途通用,没有特殊规范用于封装数据,适合在框架中使用

举个例子

普通 Java 类的使用

java

Person person = new Person();
person.name = "Alice"; // 直接访问属性
person.age = 25;       // 直接访问属性
System.out.println("Name: " + person.name);
JavaBean 类的使用

java

Person person = new Person();
person.setName("Alice"); // 通过 setter 方法设置属性
person.setAge(25);       // 通过 setter 方法设置属性
System.out.println("Name: " + person.getName()); // 通过 getter 方法获取属性

为什么要有 JavaBean 类?

  1. 封装性

    • JavaBean 的属性是私有的,外部代码不能直接修改属性,必须通过 getter 和 setter 方法。这样可以更好地控制数据的访问和修改。

  2. 标准化

    • JavaBean 遵循统一的规范,许多框架(如 Spring、Hibernate)和工具(如 JSP)都依赖这种规范,因此使用 JavaBean 可以让代码更容易与这些框架集成。

  3. 可扩展性

    • 如果将来需要在设置或获取属性时添加额外的逻辑(比如数据验证),可以直接在 setter 或 getter 方法中实现,而不需要修改外部代码。


总结

  • 普通 Java 类:没有特殊规范,属性可以直接访问。

  • JavaBean 类:属性是私有的,必须通过 getter 和 setter 方法访问,适合封装数据。

简单来说,JavaBean 是一种更规范、更安全的类设计方式,特别适合在需要封装数据或与框架集成的场景中使用。

相关文章:

  • 使用 AndroidNativeEmu 调用 JNI 函数
  • k8s学习记录:环境搭建(基于Kubeadmin)
  • 从入门到精通Rust:资源库整理
  • 【YOLOv11改进- 主干网络】YOLOv11+RepViT: 从ViT的角度重新审视Mobile的CNN助力YOLOv11有效涨点;
  • 解决Spring Boot中Druid连接池“discard long time none received connection“警告
  • DeepSeek R1的崛起与挑战:技术创新 与 普通人的反思
  • HTML之JavaScript DOM编程获取元素的方式
  • 制造业革命:数字化转型从哪里开始?
  • 【大模型系列】使用docker安装向量数据库Milvus问题备忘
  • Docker 与 Serverless(无服务器架构)
  • 玩客云OneCloud部署Zerotier虚拟局域网
  • 跨平台公式兼容性大模型提示词模板(飞书 + CSDN + Microsoft Word)
  • C++ 编程语言简介
  • P56 auto类型
  • ThinkPHP:配置Redis并使用
  • Python常用的函数和功能
  • HTML之JavaScript DOM操作元素(1)
  • Day1 初识AndroidAudio
  • 蓝桥杯试题:小明的彩灯(差分 前缀和)
  • 綫性與非綫性泛函分析與應用_1.例題(下)-半母本
  • 李强签署国务院令,公布修订后的《中华人民共和国植物新品种保护条例》
  • 豆神教育:2024年净利润1.37亿元,同比增长334%
  • 中国银行副行长刘进任该行党委副书记
  • 绿地控股:今年一季度营业收入356亿元,中高层管理人员带头降薪
  • 西班牙葡萄牙突发全国大停电,欧洲近年来最严重停电事故何以酿成
  • 日中友好议员联盟代表团访问中国人民对外友好协会