面向对象入门了解

249 阅读4分钟

对于面向对象,我们从以下几个内容来基础认识

一.什么是面向对象,为什么使用

1. 面向对象编程的好处

所谓对象:世间万物皆对象:汽车 手机 明星 风景

在编程语言中,它诸如以上例子,让我们一对一,更简单,更直观的面向某一事物来进行面向对象的操作。

2. 程序中的对象到底是啥

对象--本质是一种特殊的数据结构:如学生表格 ;某一流程图;一种需求

3.对象是怎么出来的

在Java中我们说,你没对象?--那就new一个出来啊。
可以这么写---类名 对象名=new 类名(Student s1=new Student)

QQ图片20231106201323.png
通常我们会创造两个文件,Stduent文件,我们叫做class(对象) 将Java中的class看作一个类(可以理解为对象的设计图)

进入Student中,我们便可以对我们的对象--此处举例一个学生的成绩 QQ图片20231106201709.png 然后我们可以在此中,定义出name math Chinese这些变量,用来说明对象可以处理什么数据 。

在代码中,我们使用了printtotalscore()和printaveragescore()两个方法对我们的对象进行处理。

QQ图片20231106202450.png

然后我们打开test这个文件,对我们的对象进行操作,如代码所示.
s1.name(s.)这种格式,便是我们跟对象进行引用的方法。 在程序执行中,我们便可以看到以下结果

QQ图片20231106202905.png

对于学过其他语言的各位博客们来说,似乎这和c语言中的结构体有所相似,(当然我也是这么理解的)

对象在计算机中的执行原理

讲完对象的创建和使用,我们便要谈一谈对象它在计算机中的执行原理了 微信图片_20231106203342.png 首先的是, class这个类和main,进入到方法区中.
接着,我们在class定义的一些变量及其创建的方法,跟着进入我们方法区中。
其次,在main方法中开辟一个内存进入栈内存中 。在Student中,我们对他们进行了赋值操作(如不赋值,默认为右图)也就是new出来的对象又在堆内存中开辟空间。这些对象中,就会在堆内存中存在有了地址,又指回了方法区中的创造出来的变量.

以上便是编者对于对象在计算机中的简陋理解,如有错误,请博友们及时纠正!!

讲完了面向对象的一定知识,接下来我们便来探讨对象中一些关键字和语法特点

  • this
  • 构造器
  • 封装

一.this

  • this是一个关键字,用于指代当前执行上下文中的对象。这个对象通常被称为上下文对象,它可以是一个普通对象、函数、或者构造函数的实例。this充当了一个占位符,代表了当前代码片段与其所在上下文之间的联系。
    接下来看以下举例 1.建立一个Student 类包 image.png

2.接着在Test中调用 c90fdaf95782f42e86251bac656d826.png 将下面代码执行后,我们可以看出,

//所以this语法的使用是,哪个对象调用thi所处的方法,那么this就指向这个对象
//应用场景:解决变量名重复时,所指向的对象
二.构造器
  • 无参构造器
  • 有参构造器-------(小编的理解,构造器可以是一种方法,在测试中,能调用无参有参构造器,用来完成相应的操作)

image.png

  • 需要注意是,在类中。如果不创造构造器,则ide中会自动生成无参构造器。若构造了有参构造器,则idea中不会自动生成无参构造器。需要注意
三·封装

首先我们要了解:什么是封装,为什么要要封装
可以设想这么一个场景:对一个学生的成绩进行录入,判断等级,公布这三大环节。
在打分的时候,是不是只有老师打分才对,所以,我们常用private来隐藏打分这一方法。

image.png
然后打分时,使用get和set这两个方法,对我们打分这一流程进行合理的暴露。使得老师可以从键盘中输入分数和返回分数到判断等级的方法中去

image.png

public double getscore(){
    return score;

这样,就使得了这一打分程序,做到了合理隐藏,合理暴露。使得我们的程序更加安全.

那么,在以上的介绍中,我们来具体通过一个货物储存案例,来了解面向对象的入门

  • 1.创造Goods类,生成无参有参构造器

js public class Goods { private String id;//编号
private String name;//货物名称
private double price;//货物价格
private int count;//货物库存
public Goods(){//无参构造器

}

public Goods(String id, String name, double price, int count) {
    this.id = id;
    this.name = name;
    this.price = price;
    this.count = count;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public double getPrice() {
    return price;
}

public void setPrice(double price) {
    this.price = price;
}

public int getCount() {
    return count;
}

public void setCount(int count) {
    this.count = count;
}

}

  • 2.然后创造一个货物 Goods_test运行的包

image.png 便能看到一个简单的货物查询系统了

image.png