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

前言

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

总结

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

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

相关推荐
白宇横流学长3 分钟前
基于SpringBoot实现的电子发票管理系统
java·spring boot·后端
白宇横流学长5 分钟前
基于SpringBoot实现的智慧就业管理系统
java·spring boot·后端
weixin_4624462310 分钟前
EasyExcel 动态修改模板 Sheet 名称:自定义 SheetWriteHandler 拦截器
java·开发语言·easyexcel
赵庆明老师16 分钟前
NET 使用SmtpClient 发送邮件
java·服务器·前端
苏小瀚17 分钟前
[Java EE] HTML·CSS·JavaScript基础
java·java-ee
李拾叁的摸鱼日常28 分钟前
Spring 框架中 RequestContextHolder 深度解析
java·架构
用户255425818021632 分钟前
Spring AI(二):如何在使用的时候指定角色,使用模板
后端
C++业余爱好者37 分钟前
JVM优化入门指南:JVM垃圾收集器(GC)介绍
java·开发语言·jvm
YDS82942 分钟前
SpringCloud —— 黑马商城的项目拆分和Nacos
spring boot·后端·spring cloud
Trouvaille ~43 分钟前
【Java篇】基石与蓝图::Object 类与抽象类的双重奏
java·开发语言·javase·抽象类·类与对象·基础入门·object类