黑马程序员技术交流社区

标题: 关于抽象类的 [打印本页]

作者: 张雪萍    时间: 2013-3-13 08:31
标题: 关于抽象类的
本帖最后由 张雪萍 于 2013-3-13 09:47 编辑

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

}
这是一个抽象类,里边可以定义非抽象类吗?使用抽象类之后,可以在子类完成具体功能,但是这会不会浪费内存呢?毕竟还要再写一次,
作者: TK13761    时间: 2013-3-13 08:58
通过下面示例可以看见 抽象类里面可以定义非抽象类

  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
作者: 刘国涛    时间: 2013-3-13 09:12
本帖最后由 刘国涛 于 2013-3-13 09:13 编辑

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

}
当然也不会浪费内存,因为只有子类创建对象后才分配内存
作者: 张雪萍    时间: 2013-3-13 09:45
刘国涛 发表于 2013-3-13 09:12
抽象类中可以定义非抽象方法
abstract class Student
{

奥,对对对,忘了这一点,谢谢哈
作者: 张雪萍    时间: 2013-3-13 09:46
谭仁龙 发表于 2013-3-13 08:58
通过下面示例可以看见 抽象类里面可以定义非抽象类关于内存,据了解抽象类是不能实例化的,也就是说抽象类 ...

一点也对,继续学习,谢谢哈




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2