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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 山水游客 中级黑马   /  2012-7-25 14:24  /  1706 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

抽象类的作用是什么?为什么不能被实例化?在Writer类中我发现了
构造方法
protected  Writer()
          创建一个新的字符流 writer,其关键部分将同步 writer 自身。
protected  Writer(Object lock)
          创建一个新的字符流 writer,其关键部分将同步给定的对象。
既然不能被实例化为什么还提供供子类调用的构造方法?

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
抽象类是不能够实例化的类.
它的作用就是产生子类的同时给于子类一些特定的属性和方法.
回复 使用道具 举报
抽象类的作用是什么?为什么不能被实例化?
抽象方法不能被实例化,抽象类中的方法都是抽象的,都没有方法体 ,只有个方法声明 你创建一个对象,调用它有什么用呢?
它的作用就是产生子类的同时给于子类一些特定的属性和方法.
举个现实生活的例子
如果你的程序里面需要用到苹果和梨这2个类..那么你可以分别给出这2个类
但是你会发现这2个类里面有共同的属性和方法(属性: 都有核.. 方法: 都需要削皮吃...)那么你可以建立抽象类 "水果" 基类把这些共同的东西都定义在那里. 那么你的2个子类就只需要实其他的方法了(味道, 价格,颜色...)
既然不能被实例化为什么还提供供子类调用的构造方法?
如果不指定参数,系统默认调用的父类无参的构造方法,super();
指定参数,就调用有参的构造方法,来对从父类那里继承的属性进行初始化,super(Object lock);

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 赞一个!

查看全部评分

回复 使用道具 举报
       当多个类中出现相同功能,但是功能主体不同,这时可以进行向上抽取。这时,只抽取功能定义,而不抽取功能主体
       抽象类中有构造方法是因为:抽象类是一个父类,要给子类提供实例的初始化
       抽象类不可以用new创建对象。因为调用抽象方法没意义。   
       抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,(若只是覆盖部分,子类继承后仍有抽象方法,就变成了抽象类)
         建立子类对象用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
回复 使用道具 举报
抽象类主要是为了子类能够继承它的抽象方法,从而实现多态。抽象类和接口差不多,其实接口也算是一种抽象类。
抽象类之所以不能被实例化,最根本的原因就是它没有构造方法
回复 使用道具 举报
抽象类:
特点:
1,没有方法体的方法是抽象方法,一定定义在抽象类中。
2,抽象类和抽象方法必须用abstract关键字所修饰。
3,抽象类不可以被实例化,为啥?
   因为调用抽象方法没有意义
4,抽象类必须尤其子类覆盖所有的抽象方法,其子类才可以进行实例化。
   是否责,该类还是个抽象类

   细节问题
1,抽象类一定是个父类?
  是,
2,抽象类是否可以不定义抽象方法?
  可以的,为了不让其创建对象,这种情况在java的体系中就有存在,一个

3,抽象类是否有构造函数?
   有,因为是给子类对象提供初始化动作的。

4,抽象关键字不能和哪些关键字共存?
  final :不能被继承:,而abstract需要被继承
  private 不能被覆盖了,
  static 不能被继承,继承之后没什么实在意义


一般类和抽象类有什么异同/
相同之处:
一般类和抽象类都用与描述事物,
里面可以定义属性和行为,以及构造函数
不同之处:
一般类中不可以定义抽象函数,抽象类可以,
一般函数可以被实例化,抽象类不行
一般类可以被继承,也可以不被继承
抽象类一定要被继承,需要其子类覆盖,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马