ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

面向对象编程入门(一):认识类与对象

面向对象编程入门(一):认识类与对象 1. 为什么需要面向对象在面向过程编程中我们把程序拆成一个个函数数据与操作数据的逻辑往往是分离的。随着项目变复杂这种方式会带来两个问题数据的状态散落在各处难以维护代码复用困难修改一处可能影响全局。面向对象Object-Oriented ProgrammingOOP的核心思想是把数据和对数据的操作捆绑在一起用“对象”来模拟现实世界的事物。这样写出来的代码更接近人类的思维方式也更容易维护和扩展。本文是面向对象系列的第一篇我们从最基础的两个概念开始类和对象。2. 类与对象的关系2.1 什么是类类是对象的模板或蓝图它描述了一类事物共有的属性和行为。属性描述事物的特征对应代码中的变量行为描述事物能做什么对应代码中的方法。2.2 什么是对象对象是类的具体实例。类是抽象的对象是具体的。以“学生”为例Student是类它描述了所有学生都有姓名、学号等属性以及上课、考试等行为具体某个学生如“张三”就是一个对象。用一句话总结类是模板对象是按模板造出来的具体实例。2.3 代码示例下面用 Java 定义一个最简单的学生类并创建两个对象publicclassStudent{// 属性Stringname;StringstudentId;// 行为publicvoidstudy(){System.out.println(name 正在学习);}}创建对象并使用publicclassMain{publicstaticvoidmain(String[]args){// 使用 new 关键字创建对象StudentzhangsannewStudent();zhangsan.name张三;zhangsan.studentId2024001;zhangsan.study();StudentlisinewStudent();lisi.name李四;lisi.studentId2024002;lisi.study();}}运行结果张三 正在学习 李四 正在学习可以看到同一个类可以创建出多个对象每个对象都有自己独立的数据。3. 封装把数据保护起来上面的写法有一个明显的问题name和studentId被声明为公开的外部代码可以随意修改。比如zhangsan.name;用面向对象的第二个重要概念——封装可以解决这个问题。封装的思路是把属性设置为私有private提供公开的getter和setter方法在方法里做数据校验。改写后的Student类publicclassStudent{// 属性私有化privateStringname;privateStringstudentId;publicStringgetName(){returnname;}publicvoidsetName(Stringname){if(namenull||name.isEmpty()){thrownewIllegalArgumentException(姓名不能为空);}this.namename;}publicStringgetStudentId(){returnstudentId;}publicvoidsetStudentId(StringstudentId){this.studentIdstudentId;}publicvoidstudy(){System.out.println(name 正在学习);}}封装带来的好处数据更安全外部无法绕过校验直接修改修改内部实现时不影响使用该类的代码代码职责更清晰。4. 构造方法简化对象初始化创建对象后还要一个个调用setter很麻烦我们可以引入构造方法。构造方法在创建对象时自动调用用于完成初始化。publicclassStudent{privateStringname;privateStringstudentId;// 无参构造方法publicStudent(){}// 带参构造方法publicStudent(Stringname,StringstudentId){this.namename;this.studentIdstudentId;}publicvoidstudy(){System.out.println(name 正在学习);}}创建对象时就简洁多了StudentzhangsannewStudent(张三,2024001);zhangsan.study();构造方法的特点方法名必须与类名相同没有返回值类型如果不写构造方法编译器会提供一个默认的无参构造方法一旦写了任何构造方法默认的无参构造方法就不再自动提供。5. 完整的入门示例综合以上内容一个完整的Student类如下publicclassStudent{privateStringname;privateStringstudentId;publicStudent(){}publicStudent(Stringname,StringstudentId){if(namenull||name.isEmpty()){thrownewIllegalArgumentException(姓名不能为空);}this.namename;this.studentIdstudentId;}publicStringgetName(){returnname;}publicStringgetStudentId(){returnstudentId;}publicvoidstudy(){System.out.println(namestudentId 正在学习);}}测试代码publicclassMain{publicstaticvoidmain(String[]args){StudentzhangsannewStudent(张三,2024001);StudentlisinewStudent(李四,2024002);zhangsan.study();lisi.study();}}这是一个典型的面向对象写法数据属性被封装在类内部通过构造方法和行为对外提供有限的访问方式。6. 小结本篇我们掌握了三个核心内容类与对象类是模板对象是实例封装属性私有化通过getter/setter访问保护数据安全构造方法在创建对象时完成初始化。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表