抽象类
2016-05-14 16:36
211 查看
1、两者之间不存在继承关系,可以向上抽取
class DemoA{
void show(){
syso("~~~");
}}
class DemoB{
void show(){
syso("~~~");
}}
2、抽象类的特点
1)方法只有声明,没有实现时,该方法就是抽象方法,需要被abstract修饰。
抽象函数所在的类也必须标识成抽象的。
2)抽象类不可以被实例化,即不能new 创建,因为调用抽象方法没意义,里边没有实现
3)抽象类必须有其子类覆盖所有的抽象方法后,该子类才可以实例化,否则这个子类还是抽象类。
细节:
1、抽象类中有构造函数?
有,用于给子类对象初始化。
2、抽象类可以不定义抽象方法吗?
可以,但是很少见,目的就是不让该对象创建对象。awt的适配器对象就是这种类。
通常这个类中的方法有方法体,但却没有内容
class Demo{
void show1();//没有方法体
void show2(){}//有方法体,没有内容
}
3、抽象关键字不可以和哪些关键字共存?
private 不行 private abstract show(),肯定不行,抽象方法要被覆盖,一旦私有,子类都不知道有这个方法
static 不行 如果成员变静态,还需要对象吗,不需要,直接类名.直接调用就好,但这样抽象方法运行没有意义
final 不行 因为被final修饰了,不能被继承了
4、抽象类和一般类的异同点
相同:都是用来描述事务的,都定义了成员
不同:1,一般类有足够的信息描述事务,抽象类描述信息有可能不足
2,一般类中不能定义抽象方法,抽象类中可以定义
3,一般类可以被实例化,抽象类不可以
5、抽象类一定是个父类吗
是的。因为需要子类覆盖其方法后,才能对子类实例化
class DemoA{
void show(){
syso("~~~");
}}
class DemoB{
void show(){
syso("~~~");
}}
2、抽象类的特点
1)方法只有声明,没有实现时,该方法就是抽象方法,需要被abstract修饰。
抽象函数所在的类也必须标识成抽象的。
2)抽象类不可以被实例化,即不能new 创建,因为调用抽象方法没意义,里边没有实现
3)抽象类必须有其子类覆盖所有的抽象方法后,该子类才可以实例化,否则这个子类还是抽象类。
细节:
1、抽象类中有构造函数?
有,用于给子类对象初始化。
2、抽象类可以不定义抽象方法吗?
可以,但是很少见,目的就是不让该对象创建对象。awt的适配器对象就是这种类。
通常这个类中的方法有方法体,但却没有内容
class Demo{
void show1();//没有方法体
void show2(){}//有方法体,没有内容
}
3、抽象关键字不可以和哪些关键字共存?
private 不行 private abstract show(),肯定不行,抽象方法要被覆盖,一旦私有,子类都不知道有这个方法
static 不行 如果成员变静态,还需要对象吗,不需要,直接类名.直接调用就好,但这样抽象方法运行没有意义
final 不行 因为被final修饰了,不能被继承了
4、抽象类和一般类的异同点
相同:都是用来描述事务的,都定义了成员
不同:1,一般类有足够的信息描述事务,抽象类描述信息有可能不足
2,一般类中不能定义抽象方法,抽象类中可以定义
3,一般类可以被实例化,抽象类不可以
5、抽象类一定是个父类吗
是的。因为需要子类覆盖其方法后,才能对子类实例化
相关文章推荐
- Debug和Release区别
- 《 常见算法与数据结构》符号表ST(2)——初等实现分析和有序符号表
- 两招让你成为牛X的T型人才
- 编写XML文件
- 事务-程序员的必经之路
- 新优麒麟版本发布PK微软Windows
- Failed to install Python Cryptography package
- VMWare虚拟机中的MacOSX使用XCode运行无法连接iPhone设备
- EJB 3.*环境搭建小案例
- document.documentElement.clientWidth
- Hdu oj 1421 搬寝室(dp)
- 【转】ie8 不支持 position:fixed 的简单解决办法
- (英文排版测试)Lorem Ipsum
- 2016 百度之星 B题(java实现)
- jsp页面 报core 找不到
- excel 2007代码(部分代码与另一篇2003共享)
- 软考程序员随笔-----7
- [Python]第四讲:print语句
- 原来单例模式可以这样实现
- Android ListView、GridView等性能优化