美文网首页java学习
NO.11 内存管理与继承

NO.11 内存管理与继承

作者: smallnumber | 来源:发表于2017-07-12 23:15 被阅读0次

java的内存是由JVM管理分配的,分为三个区域,分别是堆、栈和方法区。

堆:

1)用于存储所有被new出来的对象(包括成员变量)

2)java有垃圾回收器(GC)不定时的到内存中清扫垃圾,可调用System.gc()可以建议虚拟机尽快调度GC来回收

3)内存泄漏:不再使用的内存没有被及时的回收

所以建议不再使用的对象,及时将引用设置为null

4)成员变量生命周期:创建对象时储存在堆中,对象被回收时一并被回收

栈:

1)用于存储正在调用的方法中的所有局部变量(包括参数)

2)JVM会为每一个正在调用的方法分配一块对应的栈帧,方法调用结束时,栈帧被清除,局部变量一并被清除

3)局部变量的生命周期:方法结束时与栈帧一并被清除

方法区:

1)用于存储.class字节码文件(包括方法)

2)方法只有一份,通过this来区分具体的对象


继承的作用主要是实现代码的复用,通过extends来实现继承;子类继承父类之后,子类不仅有自己的属性和行为,也具有父类的属性与行为了。

继承特点:

1)一个父类可以有多个子类,但一个子类只能有一个父类(单一继承)

2)继承具有传递性,可以子继父,子子继子

3)java规定:构造子类之前必须先构造父类

子类构造中若自己不调用父类的构造,则默认super()调用父类的无参构造;若自己调用了父类的构造,则不再默认提供

super()调用父类构造,必须位于子类构造的第1句

super:

1)指代当前对象的父类对象

2)用法:super.成员变量名----访问父类的成员变量

super.方法名()----调用父类的方法

super()----调用父类的构造方法

向上造型:

1)父类型的引用指向子类的对象

2)能点出来什么,看引用的类型


至此我们便可以把昨天俄罗斯方块的七个类的相同代码抽成一个Tetromino(意思为四格拼版)父类,S、Z、L、J、I、O、T便继承该父类即可。

Cell小格基础类 Tetromino父类,被继承 通过继承父类,S、Z、L、J、I、O、T类都将变得清爽很多

下面我们将定义一个测试类----TTest,更直观的看见程序:

打印形状

结果为:

由此可见,程序逻辑是没有错误的,其他六个类构造就特别简单了。

相关文章

  • NO.11 内存管理与继承

    java的内存是由JVM管理分配的,分为三个区域,分别是堆、栈和方法区。 堆: 1)用于存储所有被new出来的对象...

  • 浅谈内存管理及僵尸对象

    //--------------------内存管理 内存管理范围: 管理任何继承NSObject的对象,基本数据...

  • JAVA面向对象-day02

    A 数组 对象的内存管理 继承

  • iPhone/Mac Objective-C内存管理教程和原理剖

    此文涉及的内存管理是针对于继承于NSObject的Class。 一基本原理 Objective-C的内存管理机制与...

  • 内存管理

    一.内存基本介绍 1、OC内存管理的基本概念 2、OC内存管理的范围​管理范围:管理任何继承自NSObject的对...

  • RxLifecycle 笔

    管理RxJava订阅后内存泄漏(内存管理) 0.添加依赖 1.使用 Activity 继承 RxActivity、...

  • OC关于在MRC模式下的内存管理学习

    内存管理 管理范围 任何继承NSObject的对象 只有OC对象才需要进行内存管理的本质原理 1.OC对象在堆中 ...

  • IOS面试题目学习

    OC有多继承吗?没有的话用什么代替? Objective-C如何对内存管理的?内存管理的原则是? Objectiv...

  • 操作系统之内存管理

    内存管理 包括内存管理和虚拟内存管理 内存管理包括内存管理概念、交换与覆盖、连续分配管理方式和非连续分配管理方式(...

  • OC内存管理 - OC

    内存管理的范围 范围:管理任何继承NSObject的对象,对其他的基本数据类型无效。 内存分区(5大分区) 栈区:...

网友评论

    本文标题:NO.11 内存管理与继承

    本文链接:https://www.haomeiwen.com/subject/mzrihxtx.html