面向对象基础

面向对象基础

一.面向对象介绍

面向:拿,找

对象:能干活的东西

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

重点:

  • 学习获取已有对象并使用,例如:Scanner
  • 学习如何自己设计对象并使用

二.设计对象并使用

类(设计图):是对象共同特征的描述

对象:是真实存在的具体东西

所以,在Java中,必须先设计类,才能获得对象

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

定义类的注意事项:

  • 用来描述一类事务的类,专业叫做Javabean类,Javabean类中是不写main方法的

  • 写main方法的类叫做测试类,在测试类中创建Javabean类的对象并使用

  • 类名首字母建议大写,需要见名知意,驼峰模式

  • 一个java文件中可以定义多个class类,且只能有一个类是public修饰,而且public修饰的类名必须成为代码文件名

  • 实际开发中,建议一个java文件中只定义一个class类

  • 成员变量的完整定义格式:修饰符 数据类型 变量名 = 初始化值; 一般无需指定初始化值,存在默认值

在这里插入图片描述

三.封装

面向对象三大特征:

  • 封装

  • 继承

  • 多态

封装的作用:告诉我们如何正确的设计对象的属性和行为

封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为

举一个例子:人画圆,这里有两个对象,一个是人对象,一个是圆对象

那么请问画圆的这个行为应该是人的还是圆的?

答案是:圆的

因为,半径数据是圆的属性,而画圆需要用到半径,所以,画圆的行为属于圆的

为了避免外界对 对象的属性进行不合理的操做,例如 a.age = -18;需要学习一个关键字:private

private:

  • 权限修饰符

  • 可以修饰成员(属性和行为)

  • 被private修饰的成员只能在本类中才能被访问

针对private修饰的成员变量,如果需要被其他类使用,提供

setXxx(参数)方法,用于给成员变量赋值,用public修饰

getXxx(参数)方法,用于获取成员变量的值,用public修饰

四.This关键字

成员变量:定义在方法的外面,类的里面

局部变量:定义在方法的里面

就近原则:谁离我近,我就用谁

在这里插入图片描述

作用:区分成员变量和局部变量

this.变量,代表的就是成员变量

this的内存原理:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

五.构造方法

作用:在创建对象的时候给成员变量进行赋值

格式:

在这里插入图片描述

特点:

  • 方法名和类名相同
  • 没有返回值类型,也没有void
  • 没有具体的返回值

分类:无参构造和全参构造

执行时机:

  • 在创建对象的时候,由虚拟机调用,不能手动调用
  • 每创建一次对象,就调用一次构造方法

注意事项:

  • 在定义方面:

    • 如果没有定义,默认给一个无参构造
    • 如果已经定义,以定义的为主
  • 构造方法的重载

    • 有参构造和无参构造,方法名相同,参数列表不同
  • 推崇的方式

    • 无论是否使用,有参构造和无参构造都要写上

六.标准的Javabean类

  • 类名需要见名知意
  • 成员变量使用private修饰
  • 提供至少两个构造方法
  • 成员方法,提供每一个成员变量对应的get/set方法,如果还有其他行为也要写上

七.对象内存图

每一款软件在运行的时候,都是需要占用一块内存区域的

java也不例外,在运行的时候,虚拟机也会占用一块内存空间,为了更好的利用这块内存,jvm将这块内存分为了5个部分
在这里插入图片描述

从JDK8开始,取消方法区,新增元空间,把原来方法区的多种功能进行划分,有的功能放到了堆中,有的功能放到了元空间中

在这里插入图片描述

但是叫什么无所谓,重要的是加载完了之后,代码该如何运行,暂时还叫方法区

当运行一个类的时候,这个类的字节码文件就会加载到方法区当中临时存储

在这里插入图片描述

一个对象的内存图:

在这里插入图片描述

在创建这个类的对象时,内存至少做以下七件事

1.加载class文件

2.申明局部变量

3.在堆内存中开辟一个空间

4.默认初始化

5.显示初始化

6.构造方法初始化

7.将堆内存中的地址值赋值给左边的局部变量

在这里插入图片描述

两个对象的内存图:

在这里插入图片描述

两个引用指向同一个对象:

在这里插入图片描述

八.基本数据类型和引用数据类型

从内存的角度解释:

基本数据类型:

数据值是存储在自己的空间中

特点:

赋值给其他变量,赋值的是真实的数据值

在这里插入图片描述

引用数据类型:

数据值存储在其他空间中,自己空间中存储的是地址值

特点:

赋值给其他变量,赋值的是地址值

在这里插入图片描述

九.成员和局部

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值