NO.11 内存管理与继承

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,更直观的看见程序:


打印形状

结果为:


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

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,352评论 18赞 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,887评论 0赞 11
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,309评论 0赞 62
  • 1 面向对象No6 面向对象 OO Object Oriented 编程时以对象为单元,封装数据和逻辑,以此提...
    征程_Journey阅读 1,302评论 0赞 2
  • 依约梦回无久延,却遭风露妒清妍。 槿花开处鸟飞去,一树秋心谁与怜。 #云烟深处•咸池#
    云烟深处YY阅读 245评论 0赞 0

友情链接更多精彩内容