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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张雪萍 中级黑马   /  2013-3-13 08:31  /  1872 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张雪萍 于 2013-3-13 09:47 编辑

bstract class Student
{
        abstract void study();
    abstract void study1();
    void study2();

}
这是一个抽象类,里边可以定义非抽象类吗?使用抽象类之后,可以在子类完成具体功能,但是这会不会浪费内存呢?毕竟还要再写一次,

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1

查看全部评分

4 个回复

倒序浏览
通过下面示例可以看见 抽象类里面可以定义非抽象类

  1. abstract class Student
  2. {
  3.     abstract void study(); //声明
  4.     abstract void study1();
  5.     void study2()
  6.         {
  7.         System.out.println("stu2!");
  8.         };

  9. }
  10. class   test12 extends Student
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 test12 te = new test12();//创建对象分配内存
  15.                 te.study();
  16.                 te.study1();
  17.                 te.study2();
  18.        
  19.         }
  20.         public  void study()
  21.         {
  22.                 System.out.println("stu!");
  23.         }
  24.         public  void study1()
  25.         {
  26.                 System.out.println("stu1!");
  27.         }
  28. }
复制代码
关于内存,据了解抽象类是不能实例化的,也就是说抽象类中的内容在加载时只是声明,并未给其分配内存,只有在子类创建对象后才在堆中分配内存,所以不会浪费内存。 希望对你有帮助over

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 刘国涛 于 2013-3-13 09:13 编辑

抽象类中可以定义非抽象方法
abstract class Student
{
         abstract void study();
     abstract void study1();
     void study2(){} //非抽象方法

}
当然也不会浪费内存,因为只有子类创建对象后才分配内存

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1

查看全部评分

回复 使用道具 举报
刘国涛 发表于 2013-3-13 09:12
抽象类中可以定义非抽象方法
abstract class Student
{

奥,对对对,忘了这一点,谢谢哈
回复 使用道具 举报
谭仁龙 发表于 2013-3-13 08:58
通过下面示例可以看见 抽象类里面可以定义非抽象类关于内存,据了解抽象类是不能实例化的,也就是说抽象类 ...

一点也对,继续学习,谢谢哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马