黑马程序员技术交流社区

标题: 抽象是用来干嘛的啊? [打印本页]

作者: 欧德林    时间: 2012-3-27 13:22
标题: 抽象是用来干嘛的啊?
据说 抽象类和一般类差不多的,但是具体有什么不同呢?

如果和一般类差不多,那要抽象类来干嘛?

抽象类里面可以有一般方法,这个方法可以是实例吗?
作者: 李井山    时间: 2012-3-27 13:29
1.在继承抽象类时,必须覆盖该类中的每一个抽象方法,而每个已实现的方法必须和抽象类中指定的方法一样,接收相同数目和类型的参数,具有同样的返回值,这一点与接口相同。
2.当父类已有实际功能的方法时,该方法在子类中可以不必实现,直接引用该方法,子类也可以重写该父类的方法(继承的概念)。
3.而实现一个接口的时候,是一定要实现接口中所定义的所有方法,而不可遗漏任何一个。
4.另外,抽象类不能产生对象的,但可以由它的实现类来声明对象。
最好再多了解下多态的概念

作者: 李见黎    时间: 2012-3-27 13:43
抽象是面向对象的设计中的一个很重要的特征,有了抽象也才使类的设计更加的漂亮,比如说,你,我,他,可能特征都不怎么样,但是都可以抽象成为人,再具体一点,可以是中国人,……这样也就有了通过定义抽象类,来实例化别的类的方法。
作者: 孙地豪    时间: 2012-3-27 13:48
  1、用abstract关键字来修饰一个类时,这个类叫抽象类;abstract来修饰一个方法时,该方法是抽象方法。
2、含有抽象方法的类必须声明为抽象类,抽象类必须被继承,抽象方法必须被重写。
3、抽象类不能被实例化。
4、抽象方法只需声明,不需实现。
作者: izwj    时间: 2012-3-27 13:49
抽象类的子类必须覆盖父类的所有抽象方法。当多个类中出现相同功能,但是功能主体不同,
这时可以定义抽象方法,抽象方法一定在抽象类中。父类中的非抽象方法,可以被子类使用或覆盖。
作者: 朱辉    时间: 2012-3-27 13:58
举个例子,你定义了一个Person类,这个类里面定义了一个吃饭的方法,吃饭可能有站着吃饭,也可能有坐着吃饭,但是你暂时不知道到底该选用哪一种吃饭的方式,如果以后再有子类继承Person类的话可以让其子类重写吃饭的方法
作者: 翟友伟    时间: 2012-3-27 20:40
最大的用户  就是   强制子类复写功能   
不同的子类需要同意的功能 ,
但是具体的参数方法可能不同,
为了保证 都要有 所以强制 定义接口 ,让子类来分别复写

就好像     人必须吃 午饭
你也吃 我也吃
但是我喜欢吃肉 吃鱼   
你喜欢吃蔬菜。  
总不能把我和你 定义在一起吧  肯定要分开的
也有可能 我喜欢也肉 吃鱼   同时也喜欢吃蔬菜。,。。
作者: 郑洋洋    时间: 2012-3-27 20:51
抽象一般都是从特例元素中抽取的共性。抽象类就是让你去继承它,然后通过子类可以调用抽象父类的方法,使得实现需求时更简单
作者: 和心愿    时间: 2012-3-27 23:43
  就是一个抽取的过程  如果两个以上的类都有相同的方法,但具体的实现不一样,如果每一个类里都需要写一样的代码;这时候就把这些共同的代码向上抽取,
含有抽象方法的类必须声明为抽象类,抽象类必须被继承,抽象方法必须被重写。抽象方法只需声明,不需实现。
  抽象类里可以有一般方法,
这个方法可以是实例吗是什么意思呢??
如果不是私有方法他的实现类的实例是可以调用的,如果一般方法被static修饰的话,就属于类方法,对象也可以调用,







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