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

前言

初入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 复制代码
小明在读书
小红在写字

总结

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

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

相关推荐
上海拔俗网络5 分钟前
“AI应急管理系统:未来城市安全的守护者
java·团队开发
天之涯上上11 分钟前
JAVA开发Erp时日志报错:SQL 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘***‘ 中的标识列插入显式值
java·开发语言·sql
m0_7482370512 分钟前
web的五个Observer API
java·前端·javascript
南宫生17 分钟前
力扣-数据结构-1【算法学习day.72】
java·数据结构·学习·算法·leetcode
zyh_03052137 分钟前
GIN中间件
后端·golang·gin
aworkholic40 分钟前
opencv sdk for java中提示无stiching模块接口的问题
java·c++·opencv·jni·opencv4android·stiching
爱学习的白杨树1 小时前
什么是MVCC?
java·服务器·数据库
hnmpf1 小时前
flask-admin modelview 中重写get_query函数
后端·python·flask
it噩梦1 小时前
深度分析 es multi_match 中most_fields、best_fields、cross_fields区别
java·elasticsearch
好看资源平台1 小时前
Java Web开发基础——Web应用的请求与响应机制
java