A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马超 中级黑马   /  2012-4-8 19:45  /  1854 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如下代码:
abstract class student
{
      abstract void study();
}

class baseStudent extends student
{
     void study()
     {
          System.out.println("base study");
     }
}

class advStudent extends student
{
     void study()
     {
          System.out.println("adv study");
     }
}

请问上述代码是如何在电脑的栈和堆内存中执行的呢??

谢谢!!

6 个回复

正序浏览
pray 高级黑马 2014-4-26 06:24:12
7#
支持~~顶顶~~~
回复 使用道具 举报
看一个程序是如何运行的,应该这个程序的代码是可以运行的才好分析,楼主的代码只能算做
代码片段,暂且分析你的这段代码吧:
         定义了一个Student的抽象类,下面有两个子类:baseStudent和advStudent.这两个子类都覆盖了
父类Student中的study方法。
        显然再写下去你要用new创建子类们的对象,然后用创建的对象来调用study方法,
        这涉及到子类对象的实例化过程、以及子父类程序加载等知识点
        关于如何加载,运行的先后顺序,多看几遍毕老师的视频第7天的4、5、6、7、8、9节,相信有助于释疑{:soso_e100:}
回复 使用道具 举报
简单的给你介绍一下堆和栈的内容吧:::希望对你有帮助

栈与堆都是Java用来在RAM中存放数据的地方。与C++不同,Java自动管理栈和堆,我们不能直接地设置栈或堆。
  Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
栈的优势是,存取速度比堆要快,但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。
回复 使用道具 举报
简单的给你介绍一下堆和栈的内容吧:::希望对你有帮助

栈与堆都是Java用来在RAM中存放数据的地方。与C++不同,Java自动管理栈和堆,我们不能直接地设置栈或堆。
  Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
栈的优势是,存取速度比堆要快,但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。
回复 使用道具 举报
你少写了一个main主函数入口。。当程序继承时。。如果有父类会先加载父类。在栈创建引用变量,,,在堆中创建真正的对象。。然后把对内存地址返回来给引用的变量。。做完之后就会接着子类。。子类同父类一样。。。当然如果有多个就会一个往上。。从最上面的父类Object下来。。因为Object是所有类的父类。。。而且最好把你得到main方法写上。。不然 不知道你要先执行什么。。这让人很难回答。。

点评

答案很精彩!  发表于 2012-4-8 22:39

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
学习中,好象没有看到程序入口
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马