I am using Microsoft Text-to-Text Speech feature in my project. But I have a question about that, actually not directly about that. So :
Normally programmers when creating Interface, they put I as a prefix of the interface name like IReadable,IEnumerator etc. But I've come across something that actually shocked me.
in Microsoft Text Speech DLL there is something like this : SpVoice which is interface (they didn't put I as prefix for some reason and I don't know why ?) and SpVoiceClass. So then what's the problem you may ask, Here :
SpVoice speak= new SpVoice(); //I created an object from SpVoice Interface
speak.Speak("Hello StackOverFlow"); //and it speaks and say exactly what I write.
and
SpVoiceClass speak = new SpVoiceClass();
speak.Speak("Hello Kowanichi"); //and it does the same thing.
The thing I don't get is how ? How does the first one work although it says it is an interface with tons of unimplemented methods etc.
Please some one explain me HOW ?
I am really confused now and maybe Microsoft developers didn't put I prefix for that reason, it can be instantiated.
Thanks in advance. Hope I describe my problem clearly.
Here is the image that I want you to see :
(source: pixelshack.us)