抽象类继承问题

renpan1003 2007-12-07 09:05:50
如果从一个抽象类继承,而且想生成新类型的一个对象,就必须为基础类中的所有抽象方法提供方法定义。如果不这样做(完全可以选择不做),则衍生类也会是抽象的,而且编译器会强迫我们用abstract关键字标志那个类的“抽象”本质。
问题:
如果类B从抽象类从A继重,类C继便类B,类C会不会是抽象类?
(假如类B都定义了抽象方法,类C没有定义抽象类A中的抽象方法)
...全文
323 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
顺风_逆流 2010-04-14
  • 打赏
  • 举报
回复
abstract 关键字定义抽象类
xiaomaha 2008-03-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 renpan1003 的回复:]
加一问题:interface和抽象类区别?
大家帮我解决一下.
[/Quote]

接口和抽象类

都是不能实例化的

个人认为他们差不多,但是由于JAVA只支持单一继承,但允许实现多个接口,如果你的一个类继承了另外一个类,那么只能使用实现接口咯,所以我认为在没有特殊情况下不要使用抽象类!

renpan1104 2008-03-05
  • 打赏
  • 举报
回复
UP
zhangbaokun 2007-12-07
  • 打赏
  • 举报
回复
这个你可以自己做试验,如果父类是抽象类,子类没有完全实现父类的抽象方法,那么子类必须定义为抽象类,不存在现不显示的问题,不用abstact就是错误!
如果子类实现了父类的抽象方法,那么子类也仍然可以定义为abstract,即使子类中一个abstract方法都没有,是不是抽象类完全取决于他有没有abstact,有就是,没有就不是
renpan1003 2007-12-07
  • 打赏
  • 举报
回复
不显示的指明C是抽象类好像C也是一个抽象类吧?
zhangbaokun 2007-12-07
  • 打赏
  • 举报
回复
抽象类是看有没有abstract前缀 一个所有方法都不是抽象的类仍然可以加abstract,所以你第一条是判断不出来的
qybao 2007-12-07
  • 打赏
  • 举报
回复
如果类B从抽象类从A继重,类C继便类B,类C会不会是抽象类?
(假如类B都定义了抽象方法,类C没有定义抽象类A中的抽象方法)
----------------------------
类B都定义了抽象方法是指都实现了抽象方法吗,如果是这样,B就不再是抽象类,那么C也就不是抽象类了。
如果B只定义那些抽象方法并不全部实现那些抽象方法,那么B就是抽象类,这时候就看C继承B以后是否把B没完全实现的抽象方法实现,如果实现了,C就不是抽象类,如果没实现,C就是抽象类。

加一问题:interface和抽象类区别?
---------------------------
一个类可以同时实现多个接口,可以弥补java不提供多继承的缺陷,抽象类只能单继承。
接口的方法都没有具体实现,抽象类可以实现一部分方法,只要有一个方法没被实现,即有一个方法被定义为absctract,那么该类就是抽象类。
Maojm 2007-12-07
  • 打赏
  • 举报
回复

抽象类和一般类的不同在于:1.抽象类可以有抽象方法。2.抽象类不能被实例化。
3.如果抽象类A被B继承,那么B要么定义所有A中的抽象方法,要么B也作为一个抽象类。
interface: 1.它也可以有域成员,但必须用static final 来修饰。
2.接口中的方法都是public的,所以声明时无须再加public修饰。接口中的方法不能定义方法体。

再很少情况下,接口和抽象类是等价的。比如抽象类里除了抽象方法,没有别的了。但是接口更能起到规范的作用。
Maojm 2007-12-07
  • 打赏
  • 举报
回复
我写了代码测试过。C可以为抽象类。
这是一个例子:
abstract class a{
public abstract String getName();

}
class b extends a{
private String name;
public b(String name){
this.name = name;
}

public String getName()
{
return name;
}
}
abstract class c extends b
{
public c(String name) {
super(name);
}
public abstract void abc();
}
注意如果 构造函数带参数的话,那么继承的那个类必须有个带参数的构造函数。用来构造你继承过来类,比如这里的b类。
renpan1003 2007-12-07
  • 打赏
  • 举报
回复
这个问题不点难啊
renpan1003 2007-12-07
  • 打赏
  • 举报
回复
加一问题:interface和抽象类区别?
大家帮我解决一下.

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧