黑马程序员技术交流社区
标题:
抽象类中的问题。。。
[打印本页]
作者:
黑马任雪刚
时间:
2012-6-16 17:33
标题:
抽象类中的问题。。。
抽象类不能被实例化对象,是因为调用它其中的抽象方法没有什么意义,那究其根本原因是不是抽象类中就不存在构造函数呢???
作者:
龙秋地
时间:
2012-6-16 17:37
本帖最后由 龙秋地 于 2012-6-16 17:45 编辑
首先抽象类 是包含抽象方法的类,而不是像接口只能包含抽象方法.而且还有成员变量和方法.
而构造方法的作用是:
1.创建对象.
2.初始化.
抽象类一定有构造方法,如果不写的话编译器会帮你加。
因为抽象类一定会有子类,
而子类的构造方法肯定会有super(),所以抽象类有构造方法.
作者:
刘笑
时间:
2012-6-16 18:00
抽象类不象具体类那样描述一类具体事物,它是提取多种具有相似性的具体事物的共同特征而产生的,比如,helicoptor, jet, fighter父类plane,有start(),takeOff(),speedUp(),changeDirection()等方法,这是共性,但现实中有一个具体的plane吗?没有,它是抽象出来的,根本不存在。所以实例化一个plane是没有意义的,因此面向对象程序设计机制禁止对象实例化.另外,抽象类中可以有构造函数,但若果在父类中(也就是抽象类)中显示的写了有参数的构造函数,在子类是就必须写一个构造函数来调用父类的构造函数。举例如下:
abstract class Person { //定义一个抽象类,必须被继承
Person(int i) {
}
}
public class Student extends Person {
Student() {
super(int i)://必须显示的调用父类构造方法//super代表父类对象
}
}
作者:
王月
时间:
2012-6-16 19:27
哦,大哥,抽象类有构造方法的好不好。
因为抽象类它本身也是一个类,所以它也能有构造方法。
虽然它不能够被实例化,但是它的构造方法也是有用的,是用于给子类做初始化的。
抽象类之所以不能被实例化的原因
:就是因为调用它的方法没有实际意义,所以干脆就不让实例化了,反正也没用。
作者:
sbeeqnui1987
时间:
2012-6-17 10:51
abstract 说明一个类为抽象类,所谓抽象类是指不能直接实例化对象的类。如果一个抽象类贝说明了,则这个类中将包括一个或几个抽象方法。所谓抽象方法是指该方法只有方法说明却没有方法体,即没有具体实现的代码。抽象类本身不具备实际功能,它只用于衍生子类。定义抽象类和抽象方法的目的是建立抽象模型。抽象类中不一定包含抽象方法,但一旦某个类中说明了抽象方法,该类必须说明为抽象类。
抽象类不象具体类那样描述一类具体事物,它是提取多种具有相似性的具体事物的共同特征而产生的,
举个例子 ActionListener这个接口用implements 实现 然后重写其中的方法 然后成为一个类,然后才能实例...而对于抽象类 用extends关键字 继承后 重新抽象方法 然后才能实例化对象,而有些特殊的抽象类 一般不继承 比如说Container 和Griphics,是用JFrame.getContentPane()方法和getGriphics() 获取 而不是自己实例化
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2