Accessing Interface Methods
You
can
access the members of the IStorable interface as
if they were members of the Document class:
Document doc = new Document("Test Document");
doc.status = -1;
doc.Read( );or you can create an instance of the interface by casting the document to the interface type, and then use that interface to access the methods:
IStorable isDoc = (IStorable) doc; isDoc.status = 0; isDoc.Read( );
In this case, in Main( )
you know that
Document is in fact an
IStorable, so you can take advantage of that
knowledge.
Tip
As stated earlier, you cannot instantiate an interface directly. That is, you cannot say:
IStorable isDoc = new IStorable( );
You can, however, create an instance of the implementing class, as in the following:
Document doc = new Document("Test Document");You can then create an instance of the interface by casting the
implementing object to the interface type,
which in this case is IStorable:
IStorable isDoc = (IStorable) doc;
You can combine these steps by writing:
IStorable isDoc =
(IStorable) new Document("Test Document");In general, it is a better design decision to access the interface
methods through an interface reference. Thus, it is better to use
isDoc.Read( ), than doc.Read( ), in the previous example. Access through an interface allows you to treat the interface polymorphically. In other words, you can have two or more classes implement the interface, and then by accessing these classes only through the interface, you can ignore their real runtime ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access