首页 > 解决方案 > 如何使用在子类中创建的方法(不是在接口上实现的方法) | C# .NET

问题描述

我正在玩和试验 C# 中的接口,我试图从接口继承以在子类中实现它们的方法,但是其中一个子类,我正在添加一个不在接口中但我的方法不能调用它。

我怎么能那样做?这就是我所拥有的

界面:

interface IShape
{
    double GetPerimeter();
    double GetArea();
}

课程:

public class Square : IShape
{
     public double  GetPerimeter()
     {
         // all code here
     }

     public double GetArea()
     {
         // all code here
     }
}

public class Rectangle : IShape
{
     public double  GetPerimeter()
     {
         // all code here
     }

     public double GetArea()
     {
         // all code here
     }

     public string PrintShape()
     {
         return "This is a rectangle!"
     }
}

主程序:

IShape shape = null;
Console.WriteLine("Select Shape");
Console.WriteLine("1- Rectangle");
Console.WriteLine("2- Square");
int shapeSelected = int.Parse(Console.ReadLine());

if (shapeSelected.Equals(1))
{
     shape = new Rectangle();
}
else
{
     shape = new Square();
}

如果我尝试从 Rectangle 类调用方法“PrintShape”,我不允许这样做,我怎么能使用不是来自接口的方法?

谢谢!

标签: c#.netinterface

解决方案


您在这里有一些误解,接口只是您的类被迫实现的一堆方法。你不继承接口,你实现它。

现在到你遇到的问题。由于 IShape 不知道 PrintShape 方法,如果你定义如果你试图调用shape.PrintShape()它,它将不会编译,因为我上面说的原因。

你怎么能解决这个问题?你有 2 个选项 1 是像这样((Rectangle)shape).PrintShape()或我建议你实际做的那样投射你的形状,给界面签名,并在正方形中将其实现为 void


推荐阅读