(更新:已经引起了我的注意,Quit方法不需要参数,并且我假设必须这样做而使它过于复杂。我现在要对其进行调整,看看是否可行。 )
我有2个类,Employee和Person,以及一个称为iQuittable的接口。 Employee从Person继承FirstName和LastName的属性。
我应该使用多态来创建接口对象IQuittable并在其上调用Quit方法。由于Employee也继承自IQuittable,因此我尝试将Employee变形为IQuittable对象。问题在于,一旦变形,就无法再访问Person属性。 Quit方法涉及Person中的FirstName和LastName,因此我尝试将这些属性放入接口文件中,并很快意识到这是不可能的。
如何将Employee转换为IQuittable并且仍然保留Person的属性?
注意:因为我对Employee使用了多态性,所以我将Quit方法的参数更改为采用iQuittable参数而不是Employee。错了吗在某些地方,“雇员”仍然完好无损,因为我尝试更改它,但它仍然给我带来错误,我不确定是否应该更改它。
如果有人可以看一下下面的代码并告诉我应该进行哪些调整,以便可以在iQuittable对象上调用Quit并仍然具有FirstName和LastName属性,我将不胜感激。
**Program file:**
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace interfaces
{
class Program
{
static void Main(string[] args)
{
IQuittable NewEmployee = new Employee();
NewEmployee.FirstName = "Kitty";
NewEmployee.LastName = "Katz";
NewEmployee.Quit(NewEmployee);
Console.ReadLine();
}
}
}
**Person file:**
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace interfaces
{
public abstract class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
}
**Employee file:**
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace interfaces
{
class Employee : Person, IQuittable
{
public void Quit(IQuittable Quitter)
{
Console.WriteLine(Employee.FirstName + " " + Employee.LastName + " has quit.");
}
}
}
**Interface file:**
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace interfaces
{
interface IQuittable
{
void Quit(IQuittable Quitter);
}
}
答案 0 :(得分:2)
Vertex: TPoint;
Val: TValue;
...
Vertex := Point(1, 22);
TValue.Make(@Vertex, TypeInfo(TPoint), Val);
Prop.SetValue(Self, Val);