接口和他的实现类
现在我有两个接口和两个类,他们之间的关系是这样的。
public interface A
{
    int m();
    int n();
    String k();
}
public interface B extends A
{
    int g();
}
public class C implements A
{
    int m(){}
    int n(){}
    String k(){}    
}
public class D implements B
{
    .......(这里该写点什么?)
    int g(){}
}
(像我上面写的D类肯定是不对的)
接口B继承接口A,
类C实现接口A,
类D实现接口B。
我怎样在类D中利用类C(因为类C中实现了接口B中来自父接口的方法),只实现接口B中新定义的方法g()就可以了,而不需要去实现B的父接口中的方法,也就是上面代码类D中那样写。
------解决方案--------------------public class D implements B exdents C
看看行不行,不过我觉得挺不舒服.
或,
public class D impolements B{
 private C c = new C();
 int m(){ return c.m; }
 ...
}
------解决方案--------------------public class D implements B extends C
{
int g(){............}
}
这样可以的。
------解决方案--------------------2楼用的感觉非常奇怪呢!但是不知道可以不可以,估计可以!
另外
即使是这样
public class D impolements B{  
 private C c = new C();  
 int m(){ return c.m; }  
 ...  
}
也不可以!
c是成员
不可能说c中的方法成为了d的方法!
------解决方案--------------------D也必须要实现C的方法的。
public class D
   implements B {
 public int g() {return 0;}
 public int m() {return 0;}
 public int n() {return 0;}
 public String k() {return "";}
}
------解决方案--------------------我上面说错了 应该说是A
------解决方案--------------------int m(){}
int n(){}
int g(){}
String k(){}   
public interface B extends A 这样也行?
------解决方案--------------------在我回答问题之前,我对楼主的学习态度表示愤怒!你的程序根本就没有通过你自己的调试,只是头脑中产生这个问题然后就来这里发问。。并没有自己思考,我是新人,如果我是JAVA老人的话,这问题我不会回答。,因为老手一眼就可以看出来程你有没有去思考。在我调试程序的时候发现你的程序有N多问题。
下面是我修改后的程序如果你去思考,并且看了接口的相关知识,应该能够理解我的意思。
interface A //定义接口A
{  
	void m();
	void n();
	void k();
}  
interface B extends A //定义接口B继承接口A
{  
	void g();
}  
class C implements A //定义类C实现接口A
{
	public void m()
	{
		System.out.println("M我被调用了!");
	}	
	public void n()
	{
		System.out.println("N我被调用了!");
	}
	public void k()
	{
		System.out.println("K我被调用了!");
	}  
}  
public class D extends C implements B //定义类D继承自类C并且实现接口B
{ 
	public void g()
	{
		System.out.println("G我被调用了!");
	}
	public static void main(String [] args)
	{
		D d = new D();//产生对象d 调用类D所实现的方法
		d.m();
		d.n();
		d.k();
		d.g();
	}
}
------解决方案--------------------17楼的实现方法是对的,开头的话我也认同。写程序最好能自己努力去调试实现,楼主所问的只是概念性的问题,应该自己查阅一下资料就可以解决的。
------解决方案--------------------所谓D中创建C实例, 并不是说D就不再要实现A的方法了.
同样D必须实现A的方法, 但是方法体里面是调用C的方法进行操作.
例如
public class D implements B {
 private C c = new C();
 public void m() {
   c.m();
 }
}
这个实际上是代理模式, C实际上是D的代理. m()是C在做事情, 而不是D. 但是从类的外观来看m()是D在做事情.