Generics C#

using System;
using System.Collections.Generic;
using System.Text;
public class HelloGenerics {
    private T _thisTalker;
    public T Talker {
        get { return this._thisTalker; }
        set { this._thisTalker = value; }
    }
    public void SayHello() {
        string helloWorld = _thisTalker.ToString();
        Console.WriteLine(helloWorld);
    }
}
public class GermanSpeaker {
    public override string ToString() {
        return "GermanSpeaker!";
    }
}
public class SpainishSpeaker {
    public override string ToString() {
        return "SpainishSpeaker";
    }
}
public class EnglishSpeaker {
    public override string ToString() {
        return "EnglishSpeaker";
    }
}
class Program {
    static void Main(string[] args) {
        HelloGenerics talker1 = new HelloGenerics();
        talker1.Talker = new GermanSpeaker();
        talker1.SayHello();
        HelloGenerics talker2 = new HelloGenerics();
        talker2.Talker = new SpainishSpeaker();
        talker2.SayHello();
    }
}