1.2Java-面向对象
目录
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对象
对象:是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为
实例:把一个类具体化,这个过程叫实例。
如定义一个 猫类,类是有属性和方法组成
cat类{
属性:性别 名字 肤色
方法:吃 跑 跳
}
创建完了,以上就是一个猫类,那么怎么得到对象呢,通过实例化(实例化通过new关键字)
我们想得到一个叫汤姆的对象(猫的具体化),方法如下:
猫 汤姆 = 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)和一些额外的附加信息。当线程执行一个方法时,就会随之创建一个对应的栈帧,并将建立的栈帧压栈。当方法执行完毕之后,便会将栈帧出栈。
堆
堆是用来存储对象本身的以及数组(数组引用是存放在Java栈中的)。堆是被所有线程共享的,在JVM中只有一个堆。
简单了解概念后,我们写了一个test类,右边是相应的栈和堆
程序开始运行
首先从main方法开始,main方法会被加载到栈中
创建Dog对象 Dog dog,main方法中
右边的new Dog,new动作发生后会在堆中开辟空间
同时在堆中存入该类的成员变量和成员方法
上一篇:1.1Java-数据类型、规则 |
下一篇:1.3Java-封装 |
还没有评论,来说两句吧...