二. Java学习笔记二

二. Java学习笔记二

  由于之前有了Cpp面向对象的思想,同时也想快速入门Java,所以Java学习笔记就记录一些学习过程中感觉比较重要的东西,以及有参考价值的代码,可能比较零散,主要是帮助自己记忆。

目录

  1. Part1. 对象的内存图
  2. Part2. 方法覆盖
  3. Part3. super与this
  4. Part4. 抽象类
  5. Part5. 接口(Intertface)

Part1. 对象的内存图

  首先是Java创建一个对象对应的内存图,如下所示:

在这里插入图片描述
我们可以看到左侧代码中有两个类,分别是Demo01PhoneOne、Phone,其中有相应的方法。在右侧代码中,我们能够看到,在JVM(Java虚拟机)内存有三块分别是,栈、堆、方法区,其功能如下所示:

  1. 堆区:
      提供所有类实例和数组对象存储区域,JVM只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身
  2. 栈区
      栈由栈帧组成,每个线程run时都会分配自己的栈内存空间,每个方法运行时会在自己的栈内存中分配栈帧内存区,各方法的局部变量存储于各自的栈帧内存区,每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
  3. 方法区
      又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。运行时常量池都分配在 Java 虚拟机的方法区之中.

Part2. 方法覆盖

  第二,方法覆盖。是指在继承关系当中,方法的名称一样,参数列表也一样
要注意覆盖(重写)和重载的区别:
重写(Override):方法的名称一样,参数列表也一样。
重载(Overload):方法的名称一样,参数列表不一样。
  方法覆盖重写特点,创建的子类对象,优先用子类的方法。同时,方法覆盖要注意如下的事项:
在这里插入图片描述

Part3. super与this

  父类代码:
在这里插入图片描述
  子类代码以及super的使用方法:
在这里插入图片描述
  我们能够看到super能用于访问父类的成员变量、方法与构造方法。
  对于this主要是调用本类内容:
在这里插入图片描述
super与this的流程图大体如下图所示:
在这里插入图片描述

Part4. 抽象类

在这里插入图片描述

Part5. 接口(Intertface)

5.1 接口定义与使用

  接口应该是今天学习到的比较重要的内容。
在这里插入图片描述
在这里插入图片描述
  接口类似一个抽象类,主要是确定继承类的标准,所以不能单独使用,注意有

public class [实现类名称] implements [接口名称]

在这里插入图片描述
在实现类中,要覆盖重写所有的接口方法,否则还是抽象类。

5.2 默认方法

  为什么需要默认方法,我们可以假设一下,对于一个接口A,有两个继承类B,C使用了这个接口,如果我们往A中添加了新的抽象方法,那么B、C就需要重写这一方法,这样会带来不便。我们可以直接在A中添加默认方法,这样B、C即使没有重写该方法,也能够直接使用。
在这里插入图片描述

5.3 静态方法

  静态变量和方法可以在不创建对象的情况下进行访问。

  1. 静态方法:静态方法会随着类的定义而被分配和装载入内存中。静态方法可以调用静态方法以及访问静态数据域,但静态方法不能调用实例方法或者访问实例数据域。
  2. 实例方法:只有在类的对象创建时在对象的内存中才有这个方法的代码段。实例方法可以调用实例方法和静态方法,以及访问实例数据域或者静态数据域。

静态方法定义
在这里插入图片描述
静态方法的使用(直接:接口.静态方法()就可以):
在这里插入图片描述

5.4 私有方法

在这里插入图片描述

5.5 接口的成员变量

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值