advertisement
javaboutique
Search Tips
Articles  |   Tutorials  |   Reviews  |   Tools  |   by Category  |   by Date  |   by Name  |   Submit  |   Source  |   Forums  |  
javaboutique
Browse DevX


Partners & Affiliates











advertisement

Articles : JavaBoutique's Introduction to Java :
Java Classes :

Contents
Classess
Abstract Classes and Interfaces
Methods
Overloading
Inheritance
Examples
Defining a Class
Instantiating and Using an Object

Abstract Classes Versus Interfaces

As a final note, I think it would be worthwhile to add a quick little section about abstract classes and interfaces. This section is based on a question I received last week along the lines of:

> when do you make a class Abstract?
> when do you define an interface?
> what is the difference between Abstract class
> and interface?

An abstract class is a special type of Java class that has the following characteristics:

  • Abstract classes cannot be instantiated as objects.
  • Abstract classes are usually used as superclasses from which to derive inherited classes that can be instantiated.
  • Abstract classes usually contain base implementations of methods that all derived classes need or want.

I think the best way to understand an abstract class is by way of a real world example.

Consider a Mammal class.

As you might recall from your years in primary school, all mammals share various methods and properties such as the fact that they are warm-blooded, maintain homeostasis, and have hair.

However, it would not exactly make sense to instantiate a mammal object from the mammal class.

Think about it, in the real world there really aren't any plain, vanilla mammals. Rather, there are "animals that are of the mammal class by inheritance" such as dogs, whales and people. But straight mammals...there aren't any in nature.

(Rule 1: Abstract classes are not instantiated as objects).

Mammal is more of a category than a thing. It is a conceptual tool used to define characteristics shared by a set of objects. It is an organizational tool defining a hierarchy.

(Rule 2: Abstract classes are used from which to derive inherited classes)

However, Mammal is not simply an organizational tool. It has value in that it does do work. The Mammal class does define methods and properties.

As a result, inherited classes like dog, whale , and person do not need to do the work.

(Rule 3: Abstract classes usually contain base implementations of methods that all derived classes need or want.)

So what good are abstract classes to you as a programmer?

Well, they are really a convenience tool that you can use when you develop object libraries. Abstract classes give you the ability to define a class from which you will derive a set of classes when you want them all to inherit a set of functionality.

Thus they provide you a way to implement a set of methods and/or properties that all derived classes will inherit.

However, it is crucial to be clear that the abstract class itself is never used by itself.

I like the example that is given by Barry Boone in his Java 2 Exam Guide.

"Imagine a class called Transaction that is to be used in a home banking application. This class has two subclasses: Deposit and Withdrawal. It might not make sense to create an instance of Transaction; a customer doesn't generically announce to the bank teller, 'I want to make a transaction', but rather 'I want to make a deposit' or 'I want to make a withdrawal'."

I think that Barry could go one step further. Not only does it not make sense to create a Transaction object, it might even be something that you want to discourage as the developer of an object library.

By declaring the class as abstract you force other programmers to maintain your sense of how the hierarchy works.


An interface is like an abstract class in that interfaces are not instantiated into objects. However, the similarity pretty much stops there.

Interfaces are not primarily concerned with defining a superclass from which to derive subclasses.

Similarly, interfaces do not contain base implementations to be used by subclasses.

Instead, an interface defines a set of "unimplemented" methods that some other object must implement in order to claim the title "official implementor of the interface"

Interfaces are essentially contracts that specify that any object that claims to implement the interface agrees to implement the set of methods defined by the interface.

Once an implementor has implemented the methods, any other object in the application can trust that the implementor has in fact implemented the methods defined by the interface.

Like abstract classes, interfaces are constructs to help programmers keep object libraries controlled and to enforce standardization on further development by other programmers. They are there to help you maintain high coding standards.

NEXT


Selena Sol contributes to the JavaBoutique's Introduction to Java. Selena curently works for Barclays Capital in London, one of the leading global investment banks in Europe and has worked as a software developer for the National Center for Human Genome research, Microline Software, Neuron Data, and Electric Eye in Singapore. Selena is perhaps best-known for creating the Public Domain Web Script Archive (Extropia) and writing several books on Web Programming (Perl, CGI, Java).
Email: selena@extropia.com

 DevX Skillbuilding from IBM developerWorks
 RIA Run Contest: Build Next-Gen Apps in Microsoft Silverlight 2
 Avaya DevConnect Center
 Intel Go Parallel Portal
 Internet.com eBook Library
 Microsoft RIA Development Center
 Destination .NET
XML error: not well-formed (invalid token) at line 53
advertisement
Receive Articles via our XML/RSS feed
Receive Articles via our XML/RSS feed

JavaBytes
Internet Cyclone
This powerful, easy-to-use, internet optimizer is for Windows 95, 98, ME, NT, 2000 and XP. It's designed to automatically optimize your Windows settings, boosting your Internet connection up to 200%.

RIM Ups Ante With Mobile Software Push
Novell Readies Silverlight Clone for Linux
Yahoo Pitches The 'Next Generation of Search'
Alfresco's Latest ECM: Prying Open a Sector?
SaaS Tool Offers Custom Database Development
Microsoft’s Automated Agent: Can We Talk?
Borland Finally Sells CodeGear
Red Hat Heads for the JON 2.0
Out with the Old, in with the New at JavaOne
Trolltech Expands WebKit Footprint

Create Secure Java Applications Productively, Part 1: Use Rational Application Developer and Data Studio
.NET Building Blocks: Custom User Control Fundamentals
Secure Internet File-Sharing with PHP, MySQL, and JavaScript
Getting Started with TBB on Windows
Moving to VoIP: Should You Go It Alone?
Introduction to the WPF Command Framework
7.0, Microsoft's Lucky Version?
Will Hyper-V Make VMware This Decade's Netscape?
Eliminate Fragmentation Frustration with Netbiscuits
Taming Trees: Building Branching Structures

Advertising Info  |   Member Services  |   Contact Us  |   Help  |   Feedback  |   Site Map  |   Network Map  |   About



JupiterOnlineMedia

internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

Jupitermedia Corporate Info


Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

Advertise | Newsletters | Tech Jobs | Shopping | E-mail Offers

Solutions
Whitepapers and eBooks
Microsoft Article: Will Hyper-V Make VMware This Decade's Netscape?
Microsoft Article: 7.0, Microsoft's Lucky Version?
Microsoft Article: Hyper-V--The Killer Feature in Windows Server 2008
Avaya Article: How to Feed Data into the Avaya Event Processor
Microsoft Article: Install What You Need with Windows Server 2008
HP eBook: Putting the Green into IT
Whitepaper: HP Integrated Citrix XenServer for HP ProLiant Servers
Intel Go Parallel Portal: Interview with C++ Guru Herb Sutter, Part 1
Intel Go Parallel Portal: Interview with C++ Guru Herb Sutter, Part 2--The Future of Concurrency
Avaya Article: Setting Up a SIP A/S Development Environment
IBM Article: How Cool Is Your Data Center?
Microsoft Article: Managing Virtual Machines with Microsoft System Center
HP eBook: Storage Networking , Part 1
Microsoft Article: Solving Data Center Complexity with Microsoft System Center Configuration Manager 2007
MORE WHITEPAPERS, EBOOKS, AND ARTICLES
Webcasts
Intel Video: Are Multi-core Processors Here to Stay?
On-Demand Webcast: Five Virtualization Trends to Watch
HP Video: Page Cost Calculator
Intel Video: APIs for Parallel Programming
HP Webcast: Storage Is Changing Fast - Be Ready or Be Left Behind
Microsoft Silverlight Video: Creating Fading Controls with Expression Design and Expression Blend 2
MORE WEBCASTS, PODCASTS, AND VIDEOS
Downloads and eKits
Sun Download: Solaris 8 Migration Assistant
Sybase Download: SQL Anywhere Developer Edition
Red Gate Download: SQL Backup Pro and free DBA Best Practices eBook
Red Gate Download: SQL Compare Pro 6
Iron Speed Designer Application Generator
MORE DOWNLOADS, EKITS, AND FREE TRIALS
Tutorials and Demos
How-to-Article: Preparing for Hyper-Threading Technology and Dual Core Technology
eTouch PDF: Conquering the Tyranny of E-Mail and Word Processors
IBM Article: Collaborating in the High-Performance Workplace
HP Demo: StorageWorks EVA4400
Intel Featured Algorhythm: Intel Threading Building Blocks--The Pipeline Class
Microsoft How-to Article: Get Going with Silverlight and Windows Live
MORE TUTORIALS, DEMOS AND STEP-BY-STEP GUIDES