Java-面向对象2020年


一、面向对象和面向过程的思想对比

  • 面向过程编程(Procedure Oriented Programming)是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的。
  • 面向对象编程(Object Oriented Programming)是一种以对象为中心的编程思想,通过指挥对象实现具体的功能。

在这里插入图片描述

二、类和对象

对象:指客观存在的事物,如上图中的洗衣机就是对象。

类是一组具有共同属性行为的事物的抽象,简单理解,类就是对事物的一种描述。

描述事物,则需要属性行为

属性:事物具备的各个特征,例如 -> 手机这个事物的特征(品牌,价格…)

行为:事物能执行的操作,例如 -> (打电话,发短信)

1.类和对象的关系

类是对象的抽象(描述),对象是类的实体
在程序中需要先有类,才能创建出对象!

2.类的定义

类的定义步骤:

  • 定义类
  • 编写类的成员变量
  • 编写类的成员方法
public class 类名 {
	// 成员变量
	变量1的数据类型 变量1;
	变量2的数据类型 变量2;// 成员方法
	方法1;
	方法2;}

3.对象的使用

创建对象

  • 格式:类名 对象名 = new 类名();
  • 范例:Phone P = new Phone();

使用对象

  1. 使用成员变量
            格式:对象名.变量名
            范例:p.brand
  2. 使用成员方法
            格式:对象名.方法名()
            范例:p.call()

4.对象调用内存图

在这里插入图片描述
①首先将测试类TestStudent加载进方法区
在这里插入图片描述
②测试类中的main()方法进入栈内存,执行代码
在这里插入图片描述
③调用Student类,将其成员变量和成员方法加载进方法区
在这里插入图片描述
④在堆内存中开辟空间、产生地址,根据Student类中的成员变量创建,且有默认值 成员方法并不会进入堆内存,但会有一个空间用来存放成员方法的地址,可通过这个地址找到字节码文件中的成员方法。上述全部完成后,将地址赋给s。
在这里插入图片描述
⑤继续执行,控制台输出:001
在这里插入图片描述
⑥继续执行,控制台输出:null…0
在这里插入图片描述
⑦将“阿强”赋给name、23赋给age,控制台输出:阿强…23
在这里插入图片描述
⑧通过s的地址找到堆内存,然后通过堆内存中的成员方法的地址找到字节码文件中的成员方法study(),将其加载至栈内存中运行,然后执行其中的代码,控制台输出:好好学习
在这里插入图片描述
⑨study()执行完成后,从栈内存中弹栈消失,然后main方法弹栈消失
在这里插入图片描述

5.垃圾回收

  • 栈内存:方法被调用就会在栈内存存在, 方法执行结束之后,从栈内存中消失了,包括里面的变量以及基本类型的数据值都消失了。

  • 堆内存:当指向这个堆内存中的对象的所有的变量都消失了的时候。这时候这个对象就会变成内存垃圾,但是并不会立刻消失。而是 java底层有一个垃圾回收机制 定时轮训 每隔一段时间就去检测垃圾,并且回收垃圾。

  • 方法区:方法区中的内容,只要jvm不关闭,任何时候都不消失。

三、成员变量和局部变量

  • 成员变量:类中方法外的变量
  • 局部变量:方法中的变量

1.成员变量和局部变量的区别

区别成员变量局部变量
类中位置不同类中方法外方法内或者方法声明上
内存中位置不同堆内存栈内存
生命周期不同随着对象的存在而存在,随着对象的消失而消失随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同有默认的初始值没有默认的初始化值,必须先定义、赋值,才能使用

四、封装

1.封装概述

封装是面向对象三大特征之一(封装、继承、多态)

是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的

2.封装原则

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

成员变量private,提供对应的getXxx()/setXxx()方法

3.封装好处

通过方法来控制成员变量的操作,提高了代码的安全性

把代码进行封装,提高了代码的复用性
在这里插入图片描述


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮华′

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值