- Home
- Products
- Integration
- Tutorial
- Barcode FAQ
- Purchase
- Company
public class Note : IStorable in Visual C#
public class Note : IStorable Encoding Code-128 In C# Using Barcode generator for .NET Control to generate, create Code-128 image in .NET applications. www.OnBarcode.comRecognize USS Code 128 In Visual C# Using Barcode scanner for Visual Studio .NET Control to read, scan read, scan image in .NET applications. www.OnBarcode.comThe designer of Note has opted to make the Read(...) method virtual but not to make the Write(...) method virtual: EAN128 Creation In Visual C#.NET Using Barcode printer for .NET framework Control to generate, create GS1 128 image in Visual Studio .NET applications. www.OnBarcode.comGenerate Code 128B In C# Using Barcode maker for .NET framework Control to generate, create Code 128 image in .NET framework applications. www.OnBarcode.compublic virtual void Read( ) public void Write( ) Encode PDF417 In C#.NET Using Barcode maker for Visual Studio .NET Control to generate, create PDF 417 image in .NET framework applications. www.OnBarcode.comDrawing Data Matrix ECC200 In C# Using Barcode encoder for Visual Studio .NET Control to generate, create Data Matrix 2d barcode image in Visual Studio .NET applications. www.OnBarcode.comIn a real-world application, you would almost certainly mark both methods as virtual, but we ve differentiated them to demonstrate that the developer is free to pick and choose which methods are made virtual. Linear Barcode Creation In C# Using Barcode creator for Visual Studio .NET Control to generate, create 1D image in .NET framework applications. www.OnBarcode.comUSPS OneCode Solution Barcode Generation In C#.NET Using Barcode generation for .NET framework Control to generate, create USPS Intelligent Mail image in .NET framework applications. www.OnBarcode.comThe new class, Document, derives from Note: Print USS Code 128 In C#.NET Using Barcode printer for .NET Control to generate, create Code128 image in .NET applications. www.OnBarcode.comRead Code 128 Code Set A In VB.NET Using Barcode decoder for Visual Studio .NET Control to read, scan read, scan image in VS .NET applications. www.OnBarcode.compublic class Document : Note
ANSI/AIM Code 128 Creator In None Using Barcode creation for Online Control to generate, create Code 128 image in Online applications. www.OnBarcode.comCreating Barcode In VS .NET Using Barcode maker for Reporting Service Control to generate, create Barcode image in Reporting Service applications. www.OnBarcode.comIt is not necessary for Document to override Read( ), but it is free to do so and has done so here: Printing Code 128C In Java Using Barcode maker for Java Control to generate, create Code 128 Code Set C image in Java applications. www.OnBarcode.comPainting QR Code In None Using Barcode generator for Microsoft Word Control to generate, create QR-Code image in Microsoft Word applications. www.OnBarcode.compublic override void Read( ) QR Code Reader In .NET Framework Using Barcode decoder for VS .NET Control to read, scan read, scan image in Visual Studio .NET applications. www.OnBarcode.comBarcode Encoder In Java Using Barcode encoder for Java Control to generate, create Barcode image in Java applications. www.OnBarcode.comTo illustrate the implications of marking an implementing method as virtual, the Run( ) method calls the Read( ) and Write( ) methods in four ways: Through the Note class reference to a Document object Through an interface reference created from the Note class reference to the Document object Through a Document object Through an interface reference created from the Document object Virtual implementations of interface methods are polymorphic, just like the virtual methods of classes. PDF417 Creation In None Using Barcode printer for Office Word Control to generate, create PDF-417 2d barcode image in Word applications. www.OnBarcode.comScanning Barcode In Java Using Barcode Control SDK for BIRT reports Control to generate, create, read, scan barcode image in Eclipse BIRT applications. www.OnBarcode.comOverriding Interface Methods |
GTIN - 13 Creator In .NET Using Barcode drawer for Reporting Service Control to generate, create EAN13 image in Reporting Service applications. www.OnBarcode.comEuropean Article Number 13 Maker In None Using Barcode maker for Software Control to generate, create GS1 - 13 image in Software applications. www.OnBarcode.comWhen you call the nonpolymorphic Write( ) method on the IStorable interface cast from the derived Document, you actually get the Note s Write method, because Write( ) is implemented in the base class and is nonvirtual. To see polymorphism at work with interfaces, you ll create a reference to the Note class and initialize it with a new instance of the derived Document class: Note theDocument = new Document("Test Document"); Invoke the Read and Write methods: theDocument.Read( ); theDocument.Write( ); The output reveals that the (virtual) Read( ) method is called polymorphically that is, the Document class overrides the Note class s Read( ), and the nonvirtual Write( ) method of the Note class is invoked because the Write( ) method was not made virtual. Overriding the Read method for Document! Note Write Method for IStorable
The overridden method of Read( ) is called because you ve created a new Document object: Note theDocument = new Document("Test Document"); The nonvirtual Write method of Note is called because you ve assigned theDocument to a reference to a Note: Note theDocument = new Document("Test Document"); To illustrate calling the methods through an interface that is created from the Note class reference to the Document object, create an interface reference named isDocument. Use the as operator to cast the Note (theDocument) to the IStorable reference: IStorable isDocument = theDocument as IStorable; Then invoke the Read( ) and Write( ) methods for theDocument through that interface: if (isDocument != null) { isDocument.Read( ); isDocument.Write( ); } The output is the same: once again, the virtual Read( ) method is polymorphic, and the nonvirtual Write( ) method is not: Overriding the Read method for Document Note Write Method for IStorable
Next, create a second Document object, this time assigning its address to a reference to a Document, rather than a reference to a Note. This will be used to illustrate the final cases (a call through a Document object and a call through an interface created from the Document object): Document theDoc = new Document("Second Test"); | 13: Interfaces
Call the methods on the Document object: theDoc.Read( ); theDoc.Write( ); Again, the virtual Read( ) method is polymorphic and the nonvirtual Write( ) method is not, but this time you get the Write( ) method for Document because you are calling the method on a Document object: Overriding the Read method for Document! Implementing a new Write method for Document! Finally, cast the Document object to an IStorable reference and call Read( ) and Write( ): IStorable isDocument2 = theDoc as IStorable; if (isDocument != null) { isDocument2.Read( ); isDocument2.Write( ); } The Read( ) method is called polymorphically, but the Write( ) method for Note is called because Note implements IStorable, and Write( ) is not polymorphic:
|
|