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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Massive 中级黑马   /  2013-11-7 18:45  /  1512 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

abstract class Demo {
        abstract  void show();
}

class DemoA extends Demo {
        void show() {
                System.out.println("demoa show");
        }
}

class DemoB extends Demo {
        void show() {
                System.out.println("demob show");
        }
}

DemoA继承了Demo之后,对他里面的方法是直接可以用呢还是要重写才能用呢?
对这里不太明白求解!

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

9 个回复

倒序浏览
抽象类的方法需要被子类重写才可以实例化,多看看张孝祥老师的基础视频
回复 使用道具 举报
抽象类特点:1、抽象方法一定在抽象类中
                  2、抽象方法和抽象类都必须被abstract关键字修饰
                  3、抽象类不可用new创建,因调用无意义
                  4、抽象类中的抽象方法要被使用。必须由子类复写起所有的抽象方法后,建立子类对象调用
    抽象类不可实例化,抽象类中可以不定义抽象方法,这样做是不被创建对象。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 明月几时有 于 2013-11-7 19:34 编辑

abstract class Demo {                      //这是一个抽象类
         abstract  void show();            //这是一个抽象方法,抽象方法一定要被重写才能用,因为它没有方法体,生来就是要被重写的,重写了才有具体的意义
}
class DemoA extends Demo {
         void show() {                                                //这里重写了抽象类的抽象方法show()
                 System.out.println("demoa show");     
         }
}

class DemoB extends Demo {
         void show() {
                 System.out.println("demob show");
         }
}
如果要使用子类中重写后的show()方法,就要在另外一个类中创建对象调用,再添加如下代码即可
        DemoA da =new DemoA( );      
        DemoB db =new DemoB( );
         da.show( );                                //调用DemoA类中的show方法
         db.show( );                               //调用DemoB类中的show方法

评分

参与人数 1技术分 +1 收起 理由
To + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
抽象类的抽象方法必须重写才可以使用,
抽象类的普通方法可已直接使用
回复 使用道具 举报
  1. abstract class Demo {
  2.         abstract  void show();
  3. }

  4. class DemoA extends Demo {
  5.         void show() {
  6.                 System.out.println("demoa show");
  7.         }
  8. }

  9. class DemoB extends Demo {
  10.         void show() {//这里继承并覆盖了Demo类中的抽象方法,必须建立子类对象才能调用的
  11.                 System.out.println("demob show");
  12.         }
  13. }
复制代码
抽象类特点:1、抽象方法一定在抽象类中
                  2、抽象方法和抽象类都必须被abstract关键字修饰
                  3、抽象类不可用new创建,因调用无意义
                  4、抽象类中的抽象方法要被使用。必须由子类复写起所有的抽象方法后,建立子类对象调用
   抽象类和一般类没有太大的区别的。
抽象类比一般类多 了个抽象函数,就是在类中可以定义抽象方法,抽象类不可以实例化(类中不明确的事物,创建不知干什么)
楼主这下对抽象类有一点的了解了吧。。。
当然还要注意一点抽象类的特殊之处:就是抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象(作用)。。。
回复 使用道具 举报
zdrain 中级黑马 2013-11-7 20:51:14
7#
呵呵,这么可爱一定是女孩子,嘻嘻,我来解答你的问题。

DemoA继承Demo之后呢,他的内部非抽象方法可以直接拿来用哦,例如Demo里要是有func(){。。。}就可以直接建立子类DemoA的引用调用func()方法

但是呢,如果是抽象方法就不一样了,因为抽象方法没有方法体,无法确定他的功能,所以要其子类对其抽象方法进行复写,这样方法就有了存在的意义了,懂了吗?如果不复写的话,子类继承了抽象方法那么这个子类也是抽象类啦。
回复 使用道具 举报
朋友,你可以再仔细看看老毕的那几段视频,毕老师将的很清楚,
抽象类的方法因为是抽象的所以无法new对象,是需要继承抽象类,子类复写里面的抽象方法,所以对你说父类里的方法不能直接调用,需要重写才能调用。
呵呵,视频要多仔细看看,不懂先想再百度,再到论坛。加油!!!
回复 使用道具 举报
首先,如果继承抽象类,你不重写,那么子类也是抽象类,抽象类是不能创建对象的。
其次,如果你不重写,那么这个方法是没办法使用的。
最后,还是看看毕老师的视频吧,这都是基本的概念,没有为什么,这是乌龟的屁股——固定。。。
回复 使用道具 举报
之所以要把这个类抽象  就是为了让继承他的类复写他的方法。 呵呵。 所以当然是要重写了才能用了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马