using System;
namespace InterestCalculator
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("欢迎使用利息计算器!");
Console.Write("请输入本金金额:");
double principal = Convert.ToDouble(Console.ReadLine());
Console.Write("请输入年利率(百分比):");
double annualInterestRate = Convert.ToDouble(Console.ReadLine());
Console.Write("请输入存款期限(年数):");
int years = Convert.ToInt32(Console.ReadLine());
double interest = CalculateInterest(principal, annualInterestRate, years);
Console.WriteLine($"在 {years} 年后,本金 {principal} 元的利息是 {interest} 元。");
}
static double CalculateInterest(double principal, double annualInterestRate, int years)
{
double interestRate = annualInterestRate / 100;
double interest = principal * interestRate * years;
return interest;
}
}
}
请注意,此程序假定用户提供正确的输入,并且只考虑简单利息计算
在此之上可以使用有关接口和继承的编写方式。
例如:
首先,我们定义一个名为"IAccount"的接口,它包含一个计算利息的方法:
public interface IAccount
{
decimal CalculateInterest();
}
接下来,我们创建一个"Account"类,它是基类,实现了"IAccount"接口,并提供了一个虚拟的计算利息方法:
public class Account : IAccount
{
protected decimal balance;
protected decimal rate;
public Account(decimal balance, decimal rate)
{
this.balance = balance;
this.rate = rate;
}
public virtual decimal CalculateInterest()
{
// 根据具体利息计算公式来计算利息
decimal interest = balance * rate;
return interest;
}
}
接下来,我们可以创建派生类来实现不同的利息计算方式。例如,我们可以创建一个名为"SimpleInterestAccount"的派生类:
public class SimpleInterestAccount : Account
{
public SimpleInterestAccount(decimal balance, decimal rate) : base(balance, rate)
{
}
public override decimal CalculateInterest()
{
// 使用简单利息计算公式计算利息:利息 = 本金 * 利率
decimal interest = balance * rate;
return interest;
}
}
现在,我们就可以使用这些类来计算利息了。下面是一个简单的示例程序,演示如何使用上述类来计算利息:
public class Program
{
static void Main(string[] args)
{
// 创建一个SimpleInterestAccount对象
SimpleInterestAccount account = new SimpleInterestAccount(1000, 0.05m);
// 调用CalculateInterest方法来计算利息
decimal interest = account.CalculateInterest();
Console.WriteLine("利息为:" + interest.ToString("C"));
Console.ReadLine();
}
}
在上面的示例中,我们创建了一个SimpleInterestAccount对象,指定了账户余额和利率。然后,我们调用CalculateInterest方法来计算利息,并将结果输出到控制台。
使用接口和继承的编写方式可以带来很多便利,诸如:
-
代码复用:继承和接口可以帮助我们实现代码的重用。通过继承,我们可以创建一个基类,其中包含多个子类所共有的属性和方法。这样,我们只需要编写一次通用的代码,然后在子类中进行必要的扩展和修改。而接口则定义了一组必须实现的方法,使得多个类可以通过实现同一接口来复用相同的功能。
-
代码组织:继承和接口可以帮助我们更好地组织和管理代码。通过将类分为基类和子类,我们可以将类的功能划分为多个级别和层次,使得代码结构更加清晰和易于维护。而接口则可以将功能归类为多个模块,通过实现不同的接口,我们可以更好地组织和复用代码。
-
多态性:继承和接口提供了多态性的特性,使得我们可以以一种通用的方式来处理不同类型的对象。通过基类或接口的引用,我们可以调用子类或实现类中的方法,而无需关心具体的实现细节。这种多态性的特性可以提高代码的灵活性和可扩展性。
-
接口隔离:使用接口可以帮助我们实现接口隔离原则,即一个接口应该只包含客户端所需要的方法。通过只实现必要的接口方法,我们可以避免不必要的功能依赖和代码耦合,使得程序更加灵活和易于测试。