🧠你真的理解面向对象吗?

前言

初入java时,总是流传着这样一句话万物皆对象,一直没完全理解其中含义,懵懵懂懂的入了行,CRUD干就完了。

然而一入编程深似海,回首已是暮年时,今以此篇直面对象

正文

面向对象具体是指什么

单说面向对象,是一种思想,具体指面向对象编程风格

主流的编程风格有三种,分别是面向过程面向对象函数式编程,面向对象是其中之一。

java就是一种面向对象编程语言,是我们实现程序设计中重要的工具,它满足面向对象编程范式,支持类或对象语法机制且实现了四大特性封装、抽象、继承、多态。

理解面向对象

万物皆对象,万物皆可归类,就是说在面向对象的思想里认为只要是存在的事物,都可以当做一个实例对象,并能找到一种或多种属于它的类。

  • 比如一只小狗作为对象,可以属于宠物类,动物类;
  • 一个人作为对象,可以属于学生类,员工类,人类;
  • 空气作为对象,可以属于空气类;
  • 地球作为对象,可以属于行星类;

但类是抽象的,具体怎么去定义,要看你从哪个角度去思考形容它,以及你的程序想实现的目标:

  • 如果你想实现一个学校人员管理系统,你以人作为对象,则归属为学生类更具体;
  • 如果你想实现一个公司员工考勤系统,你以人作为对象,则归属为员工类更贴合;

类与对象的关系

是对某一类具有共同特征(属性)/行为(方法)的事物的描述;对象是类的具体实例,代表现实世界中真实存在的个体。

但是先有类还是先有对象啊?

从现实生活去看,是先有对象后有类,因为是现有了生活中实实在在的事物,我们才能去归类对它进行描述;

从编程角度去看,是先有类后有对象,因为有了具体对某一个事物抽象的类,我们才能创建对象;

下面我们用代码体现一下,以学生类和员工类举例:

java 复制代码
/**
 * 学生类
 */
public class Student {
    /**
     * 属性(姓名,年龄,班级)
     */
    private String name;
    private Integer age;
    private String className;
    /**
     * 构造方法
     */
    public Student(String name, Integer age, String className) {
        this.name = name;
        this.age = age;
        this.className = className;
    }
    public void read(){
        System.out.println(this.name+"在读书");
    }
    public void write(){
        System.out.println(this.name+"在写字");
    }
}
java 复制代码
/**
 * 员工类
 */
public class Employee {
    /**
     * 属性(姓名,年龄,部门)
     */
    private String name;
    private Integer age;
    private String department;
    /**
     * 构造方法
     */
    public Employee(String name, Integer age, String department) {
        this.name = name;
        this.age = age;
        this.department = department;
    }
    public void toWork(){
        System.out.println(this.name+"上班啦");
    }
    public void offWork(){
        System.out.println(this.name+"下班了");
    }
}

对比可以看到我们定义学生类时有属性班级,定义员工时有属性部门,因为我们抽象出的类结合实际会定义不同的属性;

测试运行:

java 复制代码
public class Test {
    public static void main(String[] args) {
        //通过new对象类创建对象实例并设置属性
        Student xiaoming = new Student("小明",8,"三年级一班");
        Student xiaohong = new Student("小红",9,"四年级二班");
        //调用对象方法
        xiaoming.read();
        xiaohong.write();
    }
}

打印输出:

text 复制代码
小明在读书
小红在写字

总结

你理解对象了吗,以上便是个人对面向对象的总结归纳,明白面向对象之后,后续会跟着讲解四大特性封装、抽象、继承、多态在项目中的实际运用。

道友请留步,求赞+收藏,关注不迷路!!!

相关推荐
spencer_tseng几秒前
easy-captcha-1.6.2.jar
java·jar
aiopencode17 分钟前
iOS WebKit Debug Proxy 深度解析与替代方案,跨平台远程调试的新思路
后端
旭编23 分钟前
牛客周赛 Round 117
java·开发语言
无敌最俊朗@37 分钟前
01-总结
java·jvm·数据库
Java小混子38 分钟前
golang项目CRUD示例
开发语言·后端·golang
想搞艺术的程序员41 分钟前
Go 优雅关闭实践指南:从原理到框架落地
开发语言·后端·golang
JohnYan1 小时前
Bun技术评估 - 29 Docker集成
javascript·后端·docker
华仔啊1 小时前
MyBatis-Plus 让你开发效率翻倍!新手也能5分钟上手!
java·后端·mybatis
绝无仅有1 小时前
某东互联网大厂的Redis面试知识点分析
后端·面试·架构
武子康1 小时前
Java-167 Neo4j CQL 实战:CREATE/MATCH 与关系建模速通 案例实测
java·开发语言·数据库·python·sql·nosql·neo4j