java中接口多重继承
直接给个例子吧:注意这两个接口的Print()是名称及参数都是一样的interfaceIFace1{voidPrint();voidHello();}interfaceI...
直接给个例子吧:
注意这两个接口的Print()是名称及参数都是一样的
interface IFace1
{
void Print();
void Hello();
}
interface IFace2
{
void Print();
void Goodbye();
}
class FacetoFace implements IFace1,IFace2
{//这里该如何实现 IFace1的Print()和 IFace2的Print()
}
以下为全部代码
调试时出现错误
interface IFace1
{
void Print();
void Hello();
}
interface IFace2
{
void Print();
void Goodbye();
}
class FacetoFace implements IFace1,IFace2
{
//IFace1
public void IFace1.Print()
{ System.out.println("这是IFace1的Print函数"); }
public void Hello()
{ // TODO: 添加 FacetoFace.Hello 实现
System.out.println("IFace1向您说Hello!");
}
//IFace2
pubic void IFace2.Print()
{
System.out.println("这是IFace2的Print函数");
}
public void Goodbye()
{
// TODO: 添加 FacetoFace.Goodbye 实现
System.out.println("IFace2向您说GoodBye");
}
}
public class Class1
{
public static void Main(string[] args)
{
}
} 展开
注意这两个接口的Print()是名称及参数都是一样的
interface IFace1
{
void Print();
void Hello();
}
interface IFace2
{
void Print();
void Goodbye();
}
class FacetoFace implements IFace1,IFace2
{//这里该如何实现 IFace1的Print()和 IFace2的Print()
}
以下为全部代码
调试时出现错误
interface IFace1
{
void Print();
void Hello();
}
interface IFace2
{
void Print();
void Goodbye();
}
class FacetoFace implements IFace1,IFace2
{
//IFace1
public void IFace1.Print()
{ System.out.println("这是IFace1的Print函数"); }
public void Hello()
{ // TODO: 添加 FacetoFace.Hello 实现
System.out.println("IFace1向您说Hello!");
}
//IFace2
pubic void IFace2.Print()
{
System.out.println("这是IFace2的Print函数");
}
public void Goodbye()
{
// TODO: 添加 FacetoFace.Goodbye 实现
System.out.println("IFace2向您说GoodBye");
}
}
public class Class1
{
public static void Main(string[] args)
{
}
} 展开
6个回答
展开全部
楼主,你好。
我们先抛开代码的重写不谈,先谈一下设计,你认为合理吗,一个类继承两个接口,两个接口中居然有一相同的方法,那么这个接口的抽象就出现问题了。所以你这个题仅仅是作为一个理论层次的讨论,实际中并不会出现。
其次,就这个问题来说,也许我们在一个实现类中确实就写了一段print()方法,结果运行确实通过了,也不报错了,但是楼主我们细想一下,我们达到目的了吗?这是我们想到的吗?答案是No,两个不同的接口,就应该有不同的业务逻辑,怎么能用一个方法去归并两个呢?那我们为什么不抽象成一个方法呢?好,这样就回到了我前面说的,属于设计问题了。
呵呵,就这样。希望楼主能看透这点,在深究不放,那就是不好啦。
我们先抛开代码的重写不谈,先谈一下设计,你认为合理吗,一个类继承两个接口,两个接口中居然有一相同的方法,那么这个接口的抽象就出现问题了。所以你这个题仅仅是作为一个理论层次的讨论,实际中并不会出现。
其次,就这个问题来说,也许我们在一个实现类中确实就写了一段print()方法,结果运行确实通过了,也不报错了,但是楼主我们细想一下,我们达到目的了吗?这是我们想到的吗?答案是No,两个不同的接口,就应该有不同的业务逻辑,怎么能用一个方法去归并两个呢?那我们为什么不抽象成一个方法呢?好,这样就回到了我前面说的,属于设计问题了。
呵呵,就这样。希望楼主能看透这点,在深究不放,那就是不好啦。
展开全部
其实你说的多重继承就是java中所说的接口实现
如果确切的说,java只存在单继承,也就是说,一个类最多只能够有一个基类,通过extends实现。
如果想实现"多继承",就应该通过接口的形式实现,通过实现interface接口可以实现"多继承"!
如果确切的说,java只存在单继承,也就是说,一个类最多只能够有一个基类,通过extends实现。
如果想实现"多继承",就应该通过接口的形式实现,通过实现interface接口可以实现"多继承"!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
class FacetoFace implements IFace1,IFace2 {
public void Print() {
// 就行了,如果函数一样,写一个就够了
}
}
如果处理不一样,可以分开写
class FacetoFace implements IFace1,IFace2 {
public void IFace1.Print() {}
public void IFace2.Print() {}
}
public void Print() {
// 就行了,如果函数一样,写一个就够了
}
}
如果处理不一样,可以分开写
class FacetoFace implements IFace1,IFace2 {
public void IFace1.Print() {}
public void IFace2.Print() {}
}
追问
我也是这样写的
可调试时出现错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根据你给的代码,这里只要实现一个Print()方法就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-11-05
展开全部
你这个程序都写得有问题,多看看接口,覆盖,重写的概念
更多追问追答
追问
这不就是在纠结接口时想到的嘛
代码是从网上一个C#相类似的问题上找来改的 结果不会改…><…
而想请各位帮忙把它完全改正确及弄清楚
追答
给你一个经典的例子程序,记得给我分哦
package com.demo;
public interface TestInteface{
public void eat();
void test();
public abstract void play();
//protected abstract void sleep();
//private abstract void jump();
}
class InterfaceImpl implements TestInteface{
public void eat(){
System.out.println("吃的方法");
}
public void play(){
System.out.println("玩的方法");
}
public void test(){
System.out.println("测试方法");
}
public static void main(String args[]){
//接口类型实现类对象;
TestInteface ti = new InterfaceImpl();
System.out.println(ti);
ti.eat();
ti.play();
ti.test();
ti = new Cat();
ti.eat();
ti.play();
ti.test();
}
}
class Cat implements TestInteface{
public void eat(){
System.out.println("猫的吃方法");
}
public void play(){
System.out.println("猫的玩方法");
}
public void test(){
System.out.println("测试猫的方法");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询