Java C#接口、抽象类中的方法

Java C#接口、抽象类中的方法,java,c#,interface,abstract-class,Java,C#,Interface,Abstract Class,接口中声明的方法总是抽象的吗?我们如何使用抽象类和接口实现多重继承。实现是否不同于java?是的,接口中声明的方法是抽象的 接口只包含方法定义,但不包含任何代码。您需要实现接口中定义的所有方法。 抽象类是不能实例化但可以包含代码的类 一个类可以从多个接口继承。但是一个类只能从一个抽象类继承 多重继承的概念在C#和Java中基本相同 示例代码 //ABSTRACT CLASS: public abstract class Car { public abstract void Manufac

接口中声明的方法总是抽象的吗?我们如何使用抽象类和接口实现多重继承。实现是否不同于java?

是的,接口中声明的方法是抽象的

接口只包含方法定义,但不包含任何代码。您需要实现接口中定义的所有方法。 抽象类是不能实例化但可以包含代码的类

一个类可以从多个接口继承。但是一个类只能从一个抽象类继承

多重继承的概念在C#和Java中基本相同

示例代码

//ABSTRACT CLASS:
public abstract class Car
{
    public abstract void Manufactured(); //abstract method
}

public class Honda : Car
{
    public override void Manufactured()
    {
        Console.WriteLine("Honda is a Japanese car.");
    }
}

public class Renult : Car
{
    public override void Manufactured()
    {
        Console.WriteLine("Renault is a Franch car.");
    }
}

  //INTERFACE:
public interface IBike
{
    void Manufactured();
}
public interface KBike
{
    void Model();
}


public class Suzuki : IBike , KBike // multiple inheritance using interface
{
    public void Manufactured()
    {
        Console.WriteLine("Suzuki is prodused on Japan.");
    }
   public void Model()
    {
        Console.WriteLine("Suzuki is prodused on Japan.");
    }

}
带有接口和抽象类的示例

public interface IWork
{
void func();
}
public abstract class WorkClass,IWork
{
public void func()
{
    Console.WriteLine("Calling Abstract Class Function");
}}

public class MyClass:WorkClass{
...
}
接口中声明的方法总是抽象的吗

对!!C#接口只能包含抽象方法

我们如何在接口中使用静态方法

我很确定不能在接口中声明静态方法。即使你可以,这样做也没有意义。静态方法可以在任何地方调用,对吗?那么,为什么要将它们放在一个接口中呢?将它们放在一个静态类中

如何使用抽象类和接口实现多重继承

我们不能。C#不支持多重继承。一个类只能从一个类继承!这是因为C++中的多重继承极大地增加了代码的复杂性。但是类可以实现多个接口。我们只能和他们一起做

顺便说一句,抽象类是类的一种

实现是否与java不同

这取决于您所说的实现是什么意思

如果你指的是实现接口的方式,是的,它们几乎(如果不是全部的话)是相同的*。如果你指的是接口的语言实现,不,每种语言都是不同的

*然而,在C#中,您可以显式地实现接口。在Java中,你不能

编辑:

在阅读了您的评论之后,我知道您需要一个示例来显示继承抽象类和接口的类。幸运的是,我做了一个项目,它包含了这种东西

很久以前我写过一个俄罗斯方块游戏,下面是它的基本模型

我有一个表示单个俄罗斯方块的
TetrisBlock
类。以及表示俄罗斯方块块的
Tetrimino
类,例如

   口
口口口
Tetrimino有很多种,因此
Tetrimino
是一个抽象类。类,如
lshapedtrimino
tshapedtrimino
继承自它

然而,有些破伤风可以旋转,但有些不能,例如

口口
口口
因此,可以旋转的实现了一个名为
IRotatable
的接口

public interface IRotatable {
    void Rotate ();
}
如果您还不知道,接口实现是“可以用作”或“有能力”关系。因此,在这种情况下,有些破伤风具有旋转能力,但有些没有。这就是为什么有些tetriminos实现了接口,而有些没有

这一切都很有道理,不是吗


“但是我可以把rotate方法放在Tetrimino类中,为什么我需要一个接口呢?”你问道。嗯,在我看来,C#是一种面向对象的语言,OOP的全部目的就是让事情变得有意义!有时候,让你的代码有意义是件好事。我以前对此很困惑。我认为写代码就是为了实用。但这并不是全部。你还需要让事情变得有意义。这就是OOP的全部要点。

为什么要重写静态方法?它甚至说是静态的。。。
我通常会建议您阅读关于模式的内容,您可能会在那里找到解决问题的方法。

是的-接口是通过抽象设计实现的。您不能为实现提供和接口。是。在C#中,您不能(但在其他.NET语言中,这是可能的)。想做就做是的,当然。@AlexRumba如果你想知道我的项目是如何实际使用抽象类和接口的,这里是它的链接:我知道什么是接口和抽象类。我想要一个使用抽象和接口的多重继承的示例说明。@AlexRumba请看我编辑的答案。再接再厉。您可以使用Java进行默认实现: