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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙宁洋 中级黑马   /  2013-5-31 12:55  /  2041 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  对于什么情况下定义抽象类?抽象类实现的功能是怎么样的呢?
  java新手基础薄弱,请高手指点

评分

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

查看全部评分

5 个回复

倒序浏览
      抽象类主要用于关系密切的类,是对那些关系密切的类的抽象,多表示概念(比如从汽车,轿车、轮船、飞机等可以抽象出一个交通工具类,交通工具只是概念,现实中并不存在一个叫交通工具的实体,它只能是具体的轿车或飞机等;再比如说水果类,它也表示一种概念,具体到现实中,只能是苹果、梨、香蕉、桔子等中的一种,所以水果类也只能抽象类,主要用于设计大的功能单元

评分

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

查看全部评分

回复 使用道具 举报
抽象类和一般方法差不多,什么时候定义抽象类?
当所描述的事物出现了一些不确定的功能,而这些功能需要明确出现可又没法定义主体,这时就可以通过抽象方法来表示。(好像毕老师说过的原话,呵呵)
注意:抽象类不能用new创建对象,抽象类中的抽象方法没有函数体,要使用抽象类中的抽象方法必须由子类将所有抽象方法覆盖,然后建立子类对象调用。

评分

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

查看全部评分

回复 使用道具 举报

抽象类就是类的抽象,是对相似类的归纳,因此。抽象类中通常只包括抽象的方法(只有方法声明,却不含有方法体),而方法的具体实现则由其派生的各个子类来实现,
这个就使得程序的功能描述和功能的实现分开,
   因此,由于一个抽象类可以派生很多的子类,所有,抽象类中的一个抽象的方法可以在很多的子类中有多种的实现方法,这也使得程序的多态性了

例如:


public abstract class Pl{
private String aa;
...............
public abstract double area();          //这个就只有方法的声明,但是却没有实现功能  如果想实现功能,就从派生的子类来实现
}


class bb extends Pl{
                        //这个类继承了Pl类  所有上面的area的功能实现部分可以在这里实现

}

评分

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

查看全部评分

回复 使用道具 举报
了解几个类的特点就能知道如何定义类了。普通类中的方法必须有方法体, 抽象类中可以定义带方法体的类也可以定义抽象类,但是抽象类不能直接创建实例对象,子类继承后必须要实现抽象方法才能创建实例对象,否则这个子类也必须声明为抽象类。接口类中的所有方法都是抽象的。所有看你的需求就可以定义对应的类了。
回复 使用道具 举报
       你要实现多个不同的对象,而这些对象又有许多共同的特征,这时你可以将这些共同的特征抽取出来成一个父类,
而不要实现的类又是具有父类的特性,具有相同的功能但是表现又不相同,也就是说你的父类是不必要来实现这些个相同的功能的
而要去由他的子类去实现,这时候,这些不需要实现的方法是一种残缺的方法,然后就定义为抽象的方法了。
注意:有抽象方法的类一定是抽象类,抽象类可以没有抽象方法。
有时候你写一个类,比如说是工具类,你只需要调用就其中的方法了,而不需要去实例化这个对象,这时候你就可以把他定义成抽象的
以此来避免被调用的人给实例化。   说的不好还请指正

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马