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

前言

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

总结

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

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

相关推荐
安之若素^4 分钟前
启用不安全的HTTP方法
java·开发语言
ruanjiananquan9910 分钟前
c,c++语言的栈内存、堆内存及任意读写内存
java·c语言·c++
chuanauc37 分钟前
Kubernets K8s 学习
java·学习·kubernetes
一头生产的驴1 小时前
java整合itext pdf实现自定义PDF文件格式导出
java·spring boot·pdf·itextpdf
YuTaoShao1 小时前
【LeetCode 热题 100】73. 矩阵置零——(解法二)空间复杂度 O(1)
java·算法·leetcode·矩阵
zzywxc7871 小时前
AI 正在深度重构软件开发的底层逻辑和全生命周期,从技术演进、流程重构和未来趋势三个维度进行系统性分析
java·大数据·开发语言·人工智能·spring
YuTaoShao3 小时前
【LeetCode 热题 100】56. 合并区间——排序+遍历
java·算法·leetcode·职场和发展
程序员张33 小时前
SpringBoot计时一次请求耗时
java·spring boot·后端
llwszx6 小时前
深入理解Java锁原理(一):偏向锁的设计原理与性能优化
java·spring··偏向锁
云泽野7 小时前
【Java|集合类】list遍历的6种方式
java·python·list