1.2Java-面向对象

悠悠 2024-04-03 12:41 180阅读 0赞

目录

1.2.1什么是面向对象

1.2.2面向过程与面向对象

1.2.2.1 面向过程

1.2.2.2 面向对象

1.2.3面向对象三大特征

1.2.2类和对象

1.2.2.1类

1.2.2.2对象

1.2.3类的定义

1.2.3.1类定义格式

1.2.4对象的使用

1.2.4.1创建对象格式

1.2.4.2访问类中的成员

1.2.5对象内存


1.2.1什么是面向对象

Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,使用此思想去设计程序。 对象泛指现实中一切事物,每种事物都具备自己的属性行为。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去 操作实现。就是将现实世界中具体存在的事物称之为对象,简称万物皆对象

简单来说:

面向:拿,找

对象:能干活的东西

面向对象编程:拿东西过来做对应的事情

1.2.2面向过程与面向对象

1.2.2.1 面向过程

完成一个功能时,功能的每一个步骤,都需要我们进行参与,每一个细节都需要了解清楚,才能完成。强调的是过程。

1.2.2.2 面向对象

强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现

举例子:洗衣服

  • 面向过程

    把衣服脱下来—>找一个盆—>放点洗衣粉—>加点水—>浸泡10分钟—>揉一揉—>清洗衣服—>拧干—>晾起来

  • 面向对象

    把衣服脱下来 —> 打开全自动洗衣机 —>扔衣服 —> 按钮 —> 晾起来

1.2.3面向对象三大特征

封装、继承、多态

后续会详细介绍,感兴趣的可以【点击跳转1.3Java-封装】。

1.2.2类和对象

1.2.2.1类

是一组相关属性行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。

属性:状态信息

行为:能做什么

1.2.2.2对象

对象:是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为

实例:把一个类具体化,这个过程叫实例。

如定义一个 猫类,类是有属性和方法组成

  1. cat类{
  2. 属性:性别 名字 肤色
  3. 方法:吃
  4. }
  5. 创建完了,以上就是一个猫类,那么怎么得到对象呢,通过实例化(实例化通过new关键字)
  6. 我们想得到一个叫汤姆的对象(猫的具体化),方法如下:
  7. 汤姆 = new 猫;

实例化一般是由类创建的对象,在构造一个实例的时候需要在内存中开辟空间,即 Student s = new Student();

理解上述后可以简记如下:

  • 类:是对象共同特征的描述
  • 对象:是真实存在的具体的东西
  • java中,必须先设计类,才能获得对象

1.2.3类的定义

1.2.3.1类定义格式

public class ClassName {
//成员变量
//成员方法
}

定义一个学生类

public class Student {

//定义成员变量
String name;//姓名
int age;//年龄

// 定义成员方法
// 学习的方法
public void study() {
System.out.println(“学习”);
}

//吃饭的方法
public void eat() {
System.out.println(“吃饭”);
}

}

1.2.4对象的使用

1.2.4.1创建对象格式

类名 对象名 = new 类名();

1.2.4.2访问类中的成员

对象名.成员变量;
对象名.成员方法();

1.2.5对象内存

JVM内存结构涉及底层,属于中高级范畴,我们将会在后面的1.21、1.22、1.23章节详细讲解,感兴趣的可以去学习【点击跳转《1.21Java-类加载与类加载器》】,这里我们先简单来了解一下。

运行时,JVM会有,方法区,栈,堆,程序计数器和本地方法栈,对象内存重点涉及到栈和堆

栈中存放的是一个个的栈帧,每个栈帧对应一个被调用的方法,在栈帧中包括局部变量表(Local Variables)、操作数栈(Operand Stack)、

指向当前方法所属的类的运行时常量池(运行时常量池的概念在方法区部分会谈到)的引用(Reference to runtime constant pool)、

方法返回地址(Return Address)和一些额外的附加信息。当线程执行一个方法时,就会随之创建一个对应的栈帧,并将建立的栈帧压栈。当方法执行完毕之后,便会将栈帧出栈。

5fe71f25f2874e6da522ed2c6581b23d.png

堆是用来存储对象本身的以及数组(数组引用是存放在Java栈中的)。堆是被所有线程共享的,在JVM中只有一个堆。

简单了解概念后,我们写了一个test类,右边是相应的栈和堆

cafe91b027804728b00585e7a88dc52e.png

程序开始运行

首先从main方法开始,main方法会被加载到栈中

b6e091efbbfa47ae9f6c58346eecaea3.png

创建Dog对象 Dog dog,main方法中

2e46be3a865242469b51eaae272bc877.png

右边的new Dog,new动作发生后会在堆中开辟空间

4bcb7aa65584498a92f4cd82c94adca2.png

同时在堆中存入该类的成员变量和成员方法










上一篇:1.1Java-数据类型、规则
下一篇:1.3Java-封装

发表评论

表情:
评论列表 (有 0 条评论,180人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C++面向对象-12-加号运算符重载

    这篇来学习一下运算符重载,运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。这些运算符重载,包括,加减号,左右移,关系运算符,赋值运算符和递增

    相关 Java 面向对象

    当有多个数组都需要遍历时,可以将遍历的代码封装到方法中,需要遍历时,就调用相应的方法即可,提高代码的复用性。在对数组遍历的基础上继续增加需求,比如获取最值,数值逆序等,同样需要

    相关 Java面向对象

           今天看了一些有关面向对象的知识,虽然以前学过看过,但是其实感觉自己没有真正的掌握过面向对象的知识点。       现在的理解,所谓的面向对象,就是将一个事物的

    相关 Java 面向对象

    面向对象 面向过程:当需要实现一个功能时,每个具体的步骤都得自己写,亲力亲为 面向对象:当需要实现一个功能时,不关心具体的步骤,找一个已经具有该功能的东西替我做事...