关于抽象类和接口的问题!

bugpro 2003-08-18 11:42:17
问题1:
有人说:
在JAVA中,从抽象类中继承的方法,子类可以不必提供方法的实现,而从接口中继承的方法,子类必须提供方法的实现,对吗?

我认为:
我认为从接口中继承的方法,子类也可以不提供实现。对吗?

问题2:
请问:除了接口可以实现多重继承外,和抽象类还有什么区别??


请大家探讨!!
...全文
32 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bugpro 2003-08-19
  • 打赏
  • 举报
回复
和风之子交朋友,我的QQ:4931851
Wnyu 2003-08-19
  • 打赏
  • 举报
回复
:)
whyxx 2003-08-19
  • 打赏
  • 举报
回复
只要子类不是抽象类,不管是继承的抽象类还是接口,里面的方法都必须实现,
如果子类是抽象类,不管父类的抽象类还是接口,里面的方法都可以不实现.

抽象类和接口除了接口可以实现多重继承外,还有一个区别就是,抽象类里的方法可以
是实的,也就是实现了的方法,而接口里的方法只是是虚方法.
jxspace 2003-08-19
  • 打赏
  • 举报
回复
- 在JAVA中,从抽象类中继承的方法,子类可以不必提供方法的实现,而从接口中继承的方法,子类必须提供方法的实现,对吗?

Answer: 抽象类是类中有声明为abstract的方法的类,抽象类不可以实例化,比如
public abstract class ClassA{

}
在应用中你不能使用new ClassA()来创建一个对象;所有集成自抽象类的子类,要成为正常类(非抽象类)就必须全部实现抽象父类中声明的抽象函数,注意这里是“全部”,如果不全部实现,则该子类同样必须声明为抽象类。如果一个类实现了一个接口,而没有全部实现其中声明的方法,该类必须为抽象类。

- 我认为从接口中继承的方法,子类也可以不提供实现。对吗?

Answer: 类与接口关系只能是实现,即implements,接口可以继承,如
public interface InterfaceA extends InterfaceB{
}

-除了接口可以实现多重继承外,和抽象类还有什么区别??

Answer:
1.java中为避免复杂性,利用接口来“实现”“多继承”,注意这里的引号,与C++真正的多继承相比,java类的多继承“实现”只是一种“假继承”,实现多接口的类必须实现各个接口中的方法,而不是从“父类”继承而来,或者是采用集合的模式,利用其他接口实现类来实现这些接口方法。“多继承”的含义在java中名不副实。

2. 抽象类可以声明类变量,可以实现类方法,并且可以被继承;而接口是纯粹的,它只包含方法声明,以及常量,方法只是声明而不是实现。在实际的编程中,往往会遇到这样的情况,你需要一个类,该类有共有属性和共有方法为子类所共享,但是不希望这个类有实例,这个时候,抽象类是最好的OO模型。而接口,记住,它只有方法声明,也就是它只有“行为”的契约,这个契约为其实现类所遵守,所有实现类“看起来”都象接口这么个东西,在实际运用当中,调用者仅需要面对“接口”,而不用关心它“怎么”实现。






devSteven 2003-08-19
  • 打赏
  • 举报
回复
接口就是纯粹的抽象类,里面的方法都是abstract的
而且接口里面的数据成员都是static的

62,614

社区成员

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

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