对于面向对象,我们从以下几个内容来基础认识
一.什么是面向对象,为什么使用
1. 面向对象编程的好处
所谓对象:世间万物皆对象:汽车 手机 明星 风景
在编程语言中,它诸如以上例子,让我们一对一,更简单,更直观的面向某一事物来进行面向对象的操作。
2. 程序中的对象到底是啥
对象--本质是一种特殊的数据结构:如学生表格 ;某一流程图;一种需求
3.对象是怎么出来的
在Java中我们说,你没对象?--那就new一个出来啊。
可以这么写---类名 对象名=new 类名(Student s1=new Student)
通常我们会创造两个文件,Stduent文件,我们叫做class(对象)
将Java中的class看作一个类(可以理解为对象的设计图)
进入Student中,我们便可以对我们的对象--此处举例一个学生的成绩
然后我们可以在此中,定义出name math Chinese这些变量,用来说明对象可以处理什么数据 。
在代码中,我们使用了printtotalscore()和printaveragescore()两个方法对我们的对象进行处理。
然后我们打开test这个文件,对我们的对象进行操作,如代码所示.
s1.name(s.)这种格式,便是我们跟对象进行引用的方法。
在程序执行中,我们便可以看到以下结果
对于学过其他语言的各位博客们来说,似乎这和c语言中的结构体有所相似,(当然我也是这么理解的)
对象在计算机中的执行原理
讲完对象的创建和使用,我们便要谈一谈对象它在计算机中的执行原理了
首先的是, class这个类和main,进入到方法区中.
接着,我们在class定义的一些变量及其创建的方法,跟着进入我们方法区中。
其次,在main方法中开辟一个内存进入栈内存中 。在Student中,我们对他们进行了赋值操作(如不赋值,默认为右图)也就是new出来的对象又在堆内存中开辟空间。这些对象中,就会在堆内存中存在有了地址,又指回了方法区中的创造出来的变量.
以上便是编者对于对象在计算机中的简陋理解,如有错误,请博友们及时纠正!!
讲完了面向对象的一定知识,接下来我们便来探讨对象中一些关键字和语法特点
- this
- 构造器
- 封装
一.this
this是一个关键字,用于指代当前执行上下文中的对象。这个对象通常被称为上下文对象,它可以是一个普通对象、函数、或者构造函数的实例。this充当了一个占位符,代表了当前代码片段与其所在上下文之间的联系。
接下来看以下举例 1.建立一个Student 类包
2.接着在Test中调用
将下面代码执行后,我们可以看出,
//所以this语法的使用是,哪个对象调用thi所处的方法,那么this就指向这个对象
//应用场景:解决变量名重复时,所指向的对象
二.构造器
- 无参构造器
- 有参构造器-------(小编的理解,构造器可以是一种方法,在测试中,能调用无参有参构造器,用来完成相应的操作)
- 需要注意是,在类中。如果不创造构造器,则ide中会自动生成无参构造器。若构造了有参构造器,则idea中不会自动生成无参构造器。需要注意
三·封装
首先我们要了解:什么是封装,为什么要要封装
可以设想这么一个场景:对一个学生的成绩进行录入,判断等级,公布这三大环节。
在打分的时候,是不是只有老师打分才对,所以,我们常用private来隐藏打分这一方法。
然后打分时,使用get和set这两个方法,对我们打分这一流程进行合理的暴露。使得老师可以从键盘中输入分数和返回分数到判断等级的方法中去
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运行的包
便能看到一个简单的货物查询系统了