黑马程序员技术交流社区

标题: 抽象类疑问 [打印本页]

作者: HM汪磊    时间: 2013-4-15 23:19
标题: 抽象类疑问
本帖最后由 HM汪磊 于 2013-4-16 12:54 编辑

抽象类有没有构造函数???

抽象类中可以没有抽象方法吗???

作者: liuyangyang    时间: 2013-4-15 23:24
你好,
1.抽象类可以有构造方法,
2.抽象类中可以没有抽象方法。

含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。
含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。
abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。
如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
作者: 李力    时间: 2013-4-15 23:33
抽象类(abstract)
        (1)只抽取了很多类的方法的声明,为了保证不出问题,方法声明用abstract修饰。
        (2)抽象类的特点
                A:一个类如果有了抽象方法,那么这个类必须是抽象类。抽象类里边可以没有抽象方法。
                B:抽象类是不能够被实例化的。不能够创建对象的。
                C:如果一个类继承抽象类,那么,它要么实现抽象类中的所有抽象方法,
                   要么本身也是抽象类。
        (3)抽象类的成员特点:
                A:成员变量:子类可以直接继承抽象类中的成员变量。(抽象类中的成员变量可以和以前是一样的)
                B:成员方法:抽象类中分为两种方法,一种是抽象方法,这种方法在子类中必须要被实现。
                             一种是普通的方法。可以被子类直接继承使用。
                C:构造方法:抽象类不能被实例化,那么它有构造方法吗?抽象类是class,那么它就有构造方法。
                             它的构造方法有用吗?有,为了让子类实例化的时候使用。
       
作者: 栗俊植    时间: 2013-4-15 23:40
某些知识点受教了!
作者: _王涛    时间: 2013-4-15 23:40
抽象类中有构造方法的,每当子类创建构造函数时,都要默认访问父类,也就是抽象类的构造方法,所以有构造方法。
抽象类中可以没有抽象方法,但是有抽象方法的类,一定被abstract锁修饰,一定是抽象类,
如果抽象类中有抽象方法,那么久必须由子类去实现,抽象类是不能new对象的,没有意义。

作者: PANZERLEADER    时间: 2013-4-16 00:31
1、抽象类中可以有构造方法。
     但是如果想通过构造方法创建抽象类对象的时候,需要覆盖抽象类中的抽象方法,否则无法创建对象
2、抽象类中可以没有抽象方法。
作者: 段旭东    时间: 2013-4-16 02:36
答题开始:
问题1:抽象类有没有构造函数???
抽象类中有构造方法的。
问题2:抽象类中可以没有抽象方法吗???
抽象类中可以没有抽象方法,但是有抽象方法的类,一定被abstract修饰,一定是抽象类,

作者: 王婷婷    时间: 2013-4-16 11:14
为什么要有抽象类,是因为在描述事物的某些属性时,由于一类事物中的不同个体有着不同的行为特征,虽然他们具有相同的功能但功能主体不同(比如),这时就需要将构造方法定义为抽象方法,再由其子类复写所有的抽象方法后,建立子类对象调用后才有意义。

抽象类中可以有构造方法,可以没有抽象方法。
若抽象类中有抽象方法,必须由其子类具体实现才有意义。昨天刚看了IO流视频中的一些知识:
Writer:写入字符流的抽象类。子类(FileWriter)必须实现 write(char[], int, int)、flush() 和 close()的方法才能向文本文件中写入数据。

抽象类(不可实例化)的一些特点:
1、抽象方法一定要在抽象类中,所以该类和方法要被abstract关键字修饰
2、抽象类不能创建对象,调用抽象方法无意义
3、抽象类中的抽象方法要被使用,必须由子类复写所有的抽象方法后,建立子类对象调用




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