A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗凯健 中级黑马   /  2013-9-25 17:13  /  1953 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 2013-9-25 20:07 编辑

注意:当类与接口(或者是接口与接口)发生方法命名冲突的时候,此时必须使用内部类来实现。

于是我写了几个代码试一下:
  1. package com.itheima;

  2. public class ClassA {
  3.         public void printA(){
  4.                 System.out.println("I'm A");
  5.         }
  6. }
复制代码
  1. package com.itheima;

  2. public interface InterfaceB {
  3.         public void printA();
  4. }
复制代码
  1. package com.itheima;

  2. public class ClassC extends ClassA implements InterfaceB{
  3.         public void printA(){
  4.                 System.out.println("I'm C!");
  5.         }
  6. }
复制代码
  1. package com.itheima;

  2. public class main {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 ClassC c=new ClassC();
  9.                 c.printA();
  10.         }

  11. }
复制代码
很简单的类,我是直接在ClassC上面实现接口方法的,调用的时候也能正确调用!那么这句话是对的还是错的?!还是说我的理解有误?!

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

6 个回复

倒序浏览
类与接口(或者是接口与接口)发生方法命名冲突,你的这几个类和接口命名没有冲突,只是方法名一样罢了,不存在冲突的问题,类实现接口就必须实现接口所定义的方法,你这里很显然实现了方法的定义。类继承其他的类,你这里实现了方法的覆盖,也是正确的,并不存在冲突的问题,我想你是把类,接口。方法这几个定义搞混了,希望可以帮到你。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
暮雨 发表于 2013-9-25 17:24
类与接口(或者是接口与接口)发生方法命名冲突,你的这几个类和接口命名没有冲突,只是方法名一样罢了,不存 ...

求个例子。。这样说不是太明白。。谢谢{:soso_e154:}
回复 使用道具 举报
本帖最后由 早知道 于 2013-9-25 17:32 编辑

根据这句话的意思,应该是接口实现的方法和类实现的方法是是不同的功能实现,但你现在只是实现了一个功能而已。如果你不用实现两个功能,显然是没有什么问题的。
回复 使用道具 举报
内部类可以实现接口,当类与接口或者接口与接口发生方法命名冲突的时候,还必须用内部类来实现接口。实现Runnable这个接口与继承Thread这个父类这是Java中实现线程的两种方式。因为Java的单继承的体系结构,也就说你编写的类只能有一个父类,所以有的时候不能把Thread作为父类,那么就可以实现Runnable接口,来实现多线程。而且Thread类本身也是实现了Runnable接口。
是定义在另一个类中的类。

也可以在接口中定义,内部类可以继承某类或实现某接口;

内部类是一种编译时的语法,编译后生成的两个类是独立的两个类。内部类配合接口使用,来强制做到弱耦合(局部内部类,或私有成员内部类)。

用接口不能完全地实现多继承,用接口配合内部类才能实现真正的多继承。

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
xh396660787 + 1 赞一个!
杨增坤 + 1

查看全部评分

回复 使用道具 举报
djkyqkzj 发表于 2013-9-25 19:32
内部类可以实现接口,当类与接口或者接口与接口发生方法命名冲突的时候,还必须用内部类来实现接口。实现Ru ...

这样说我有点明白,假如有例子就更明白了
回复 使用道具 举报
罗凯健 发表于 2013-9-25 20:08
这样说我有点明白,假如有例子就更明白了

好的   下次有了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马