关于抽象类与接口类

Eoumer 2015-09-16 01:19:14
加精
抽象类和接口中有同一个抽象方法,一个类继承了那个抽象类并实现了那个接口,那么这个子类重写的方法是调用接口的还是抽象类的?

例如:
public abstract class abstractClass{
public abstract void test();
}

public interface interfaceClass{
public abstract void test();
}

public class E extends abstractClass implements interfaceClass{
@Override
public void test(){
//TODO Auto-generated method stub
}
}


那么子类是调用抽象类中的test()还是接口中的test()呢?
...全文
4718 62 打赏 收藏 转发到动态 举报
写回复
用AI写文章
62 条回复
切换为时间正序
请发表友善的回复…
发表回复
仔细喔皮 2016-06-27
  • 打赏
  • 举报
回复
回到基本概念来回答,接口的其中一个功能是拓展,比如A,B继承C,但A和B中都有共同的方法fun1(),e而c类的其他子类没有fun()这个方法,所以讲fun()提取出来封装到一个接口D中,A,B可以通过implements 来实现接口D中的fun()方法,这么做提高了代码的复用性,也是面向对象的思想.楼主这样编写,从本质上没有搞清接口的作用.
Ordinary-1995 2016-04-24
  • 打赏
  • 举报
回复
既然是重写,那应该是调用父类的方法
iamjsber 2016-02-26
  • 打赏
  • 举报
回复
重写了 重写了 重写了
javafly66 2015-12-13
  • 打赏
  • 举报
回复
你这程序现在是在重写方法,当你在创建子类对象时,调用方法 ,就是你在子类中重写的方法
  • 打赏
  • 举报
回复
涨知识了。
  • 打赏
  • 举报
回复
知道重写哪个很重要吗?难道你还想多态调用?java的单继承就是为了解决多继承中不晓得调用哪个父类方法的问题,抽象方法没有方法体,管它继承哪个,能用就行
qq_32272593 2015-10-25
  • 打赏
  • 举报
回复
引用 45 楼 yj7758423 的回复:
我遇到过一道面试题:同时继承Thread并实现Runnable,问运行的是哪个线程,结果是继承Thread的那个


这个问题我试验了一下 感觉很好玩
我看了下Thread类的源代码 原来Thread类实现Runnable接口 重写了run方法
qq_32272593 2015-10-25
  • 打赏
  • 举报
回复
引用 18 楼 wind3at048 的回复:
你可以对比下:Comparable接口也有一个toString()方法,但是任何类实现Comparable方法时,只需实现comparaTo()方法,而没有必要实现toString()方法,因为Object类已经实现过了toString()方法,以下两种方式调用都可以通过: Comparable test=new T(); test.toString(); 或者Object test1=new T(); test1.toString(); 都是可以的,多态定义动态绑定机制会匹配实际类的方法;所以我们可以认为此方法是调用的具体是属于抽象类或者接口,可以根据声明类型来决定。
Comparable接口 有toString方法吗,任何类实现Comparable接口,实现的toString方法是该类继承自Object的toString方法好吗
rookie_s 2015-10-12
  • 打赏
  • 举报
回复
既然继承了,两个方法就都能调用,不用太纠结具体是哪个
cattpon 2015-10-12
  • 打赏
  • 举报
回复
learning~
shantb 2015-10-10
  • 打赏
  • 举报
回复
不错,学习了
luomingui 2015-10-10
  • 打赏
  • 举报
回复
好东西,学习
okkk 2015-10-09
  • 打赏
  • 举报
回复
引用 47 楼 luj_1768 的回复:
接口类,实现的是一个指向一类函数的指针。或者说,实现的是函数的动态调用。没有实体或实现。 抽象类和虚基类,是类派生方面非常复杂的概念。我也搞不懂怎么编译。
这些都是在编译器 很简单的逻辑下实现的。不用太纠结。 接口就是一个函数地址的集合,只是在编译时有效,程序运行时,这个集合并不存在。 接口在不同类,不同的继承层级上会有不同的内容,所以只要一个类明确实现了一个接口,那么编译器就需要创建一个函数地址表。 抽象类和虚基类 就是一组独立存在的函数,这些函数可以被其子类使用。编译后,继承自抽象类 和 继承自子类 ,不会有什么不同。抽象类和虚基类不能创建实体对象也仅仅是对编译器的要求。
kaiyi2088 2015-10-09
  • 打赏
  • 举报
回复
好东西,学习
Miracle_lucy 2015-10-08
  • 打赏
  • 举报
回复
学习了
luj_1768 2015-10-08
  • 打赏
  • 举报
回复
接口类,实现的是一个指向一类函数的指针。或者说,实现的是函数的动态调用。没有实体或实现。 抽象类和虚基类,是类派生方面非常复杂的概念。我也搞不懂怎么编译。
cattpon 2015-10-05
  • 打赏
  • 举报
回复
引用 12 楼 xiesq5112 的回复:
楼主 你好。我花了大概十分钟的时间实践操作了一下。另外我还写了一个main方法调用 分享我的结果: 我写的main方法如下: ① AbstractClass abs=new E(); abs.test(); ② InterfaceClass inter=new E(); inter.test(); ③ E e=new E(); e.test(); 把光标放在抽象类或接口中的方法名上: ctrl+shift+g 可以查看这个方法的引用, 在Search窗口中可以看到如下结论: 如果只写①的话,在接口中的方法是找不到引用的 如果只写②的话,在抽象类中的方法是找不到引用的 如果只写②的话,我发现两个方法都可以聚焦到main方法中 由此,结果也就很明了了!
小哥很有心啊!!感谢~~
yj7758423 2015-10-03
  • 打赏
  • 举报
回复
我遇到过一道面试题:同时继承Thread并实现Runnable,问运行的是哪个线程,结果是继承Thread的那个
qq_27234075 2015-10-01
  • 打赏
  • 举报
回复
接口和抽象类,子类不存在去调用它们的抽象方法。这类方法只是为子类在实现这些方法的时候提供一个模板
cattpon 2015-10-01
  • 打赏
  • 举报
回复
很好的讨论~继续关注~
加载更多回复(41)

62,615

社区成员

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

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