create your own

Java Tutorial - A Simple Introduction to Inheritance

74
rate or flag this page

By nicomp


This tutorial provides a simple introduction to the concept of inheritance in Object Oriented Programming (OOP). Using Java as our programming language, we illustrate how to create a base class and a derived class. Next, we illustrate how to leverage the derived class in a simple main().

Figure 01 describes our base class. The class has only one member, which is a public property called baseClassInt, declared as an integer. Because it is public, it will be visible to the derived class that we will create shortly. As this class is intended to be a learning tool, we omit many of the details necessary to a useful class in the real world.

Spoiler Alert: The baseClassInt property really shouldn't be public, but we'll address that in a few minutes. :)

Figure 01 - A simple base class with one public member. The member is called baseClassInt.

Figure 02, below, introduces the derived class. Note the keyword extends in the class definition. This keyword causes all the members of BaseClass to be included in the derived class. Even the private members of the base class become members of the derived class.

We are keeping it very simple; usually there would be one or more members in the derived class. For clarity, we are leaving them out. A derived class with no members is syntactically correct but not common.

Figure 02 - The Derived Class, which inherits from the Base Class.
Figure 02 - The Derived Class, which inherits from the Base Class.

Figure 03 is the main() for this project. Here we declare and instantiate an object of type DerivedClass. Instantiating a derived class object creates memory-based copies of all non-static data items in the derived class and the corresponding base class.

Next, we use our new object to reference the member that was declared in the Base Class.

Figure 03 - The main(), in which a Derived Class object is declared and instantiated.
Figure 03 - The main(), in which a Derived Class object is declared and instantiated.

While it looks OK and it builds properly, but it's not really what we want. We can clean it up now.

One of the strengths of OOP is data hiding. In other words, variables (also called properties) that are declared in a class should be 'hidden' in that class. They shouldn't be available to derived classes.

So far, we have violated the philsophy of data hiding. We can fix that.

In Figure 04, the first change we make is to hide the variable in the base class by making it private.

Figure 04 - Hide the variable in the Base Class by declaring it private.
Figure 04 - Hide the variable in the Base Class by declaring it private.

Hiding the variable in the Base Class creates a problem in the Derived Class. The project doesn't build any more; a syntax error is flagged in the main(). We changed the scope of the variable. The error is caused by the attempt to reference the base class property from the derived class object.

Figure 05 illustrates the problem.

Figure 05 - The project doesn't build because we can't access a private variable in a base class
Figure 05 - The project doesn't build because we can't access a private variable in a base class

This problem is solved by adding a procedure, also called a method, to the base class. This method will provide controlled access to the private variable.

The name of our method isn't special to the Java language, but it's a general convention to preface it with the word "Set" and follow that with the name of the variable.

Figure 06 includes the new code.

Figure 06 - Code added to the base class to provide access to the private variable
Figure 06 - Code added to the base class to provide access to the private variable

FInally, the main is modified to make use of the code we added to the base class. Figure 07 illustrates the modifications.

Figure 07 - Modifications to main() in order to take advantage of the public method in the base class.
Figure 07 - Modifications to main() in order to take advantage of the public method in the base class.

This tutorial is a very simple introduction to inheritance in Java. The concept applies to all OOP languages and this code can be used as a basis for learning how to implement inheritance.

Comments

RSS for comments on this Hub

No comments yet.

Submit a Comment

Members and Guests

Sign in or sign up and post using a hubpages account.


optional


  • No HTML is allowed in comments, but URLs will be hyperlinked
  • Comments are not for promoting your hubs or other sites

  • The Technology Behind Last.fm

    CNET's Crave has up a detailed interview with Last.fm's Matthew Ogle, the company's head of Web development. Reader CNETNate notes that Last.fm has streamed 275,000 years of audio around the world. From the interview: "We stream all music directly off our servers in London. We have a cluster of streaming nodes including a bunch of powerful machines with solid-state hard drives. We have a process that runs daily which finds the hottest music and pushes those tracks on to the SSDs streamers that sit in front of our regular platter-based streaming machines. That way, if someone is listening to one of our more popular stations, the chances are really good that these songs are coming off our high-speed SSD machines. They're fast because every song is sitting in memory instead of being on a slow, spinning platter." The interview is actually on two pages but pretends it's on three.Read more of this story at Slashdot.

  • Air Cannon Ties Pirates In Knots

    Hugh Pickens writes "Numerous high-tech devices have been proposed to help ships cope with piracy on the high seas. Now a company has developed a ship-borne launching device that fires a net or coiled rope into the path of pirate vessels using compressed air with a range of up to a range of 400m. The payload net or rope, which has a parachute attached to the end, will unravel and lay out across the surface of the water so that as the pirate boat travels through the water its propeller shaft will pick up the line and become entangled. 'With the trials and testing we've done, it has taken us some 45 minutes to cut and disentangle the line from the propeller itself,' says Jonathan Delf. 'Within that time of course, the target ship is on its way and hopefully help has arrived in the form of naval forces or helicopter support.' The system can be fired up to five times off just a cylinder of air like a simple scuba tank." The video mentions that the device can also fire a payload of golf balls. The systems have recently be sold to "several large shipping companies that travel near the oil-rich Nigerian Delta, which, like the Somalian coast, is rife with piracy."Read more of this story at Slashdot.

  • Where the Global Warming Data Is

    Several readers noted the latest fallout from the Climate Research Unit's Climategate: the admission by the University of East Anglia that the raw data behind important climate research was discarded in the 1980s, "a time when climate change was seen as a less pressing issue" according to the Times (UK) article. The Telegraph quotes Phil Jones, beleagured head of the CRU: "Our global temperature series tallies with those of other, completely independent, groups of scientists working for NASA and the National Climate Data Centre in the United States, among others. Even if you were to ignore our findings, theirs show the same results. The facts speak for themselves; there is no need for anyone to manipulate them." Some of the data behind these other results can likely be found in a new resource that jamie located up at the Real Climate site: a compilation of links to a wide variety of raw data about climate. From the former link: "In the aftermath of the CRU email hack, many people have come to believe that scientists are unfairly restricting access to the raw data relating to the global rise in temperature. ... We have set up a page of data links to sources of temperature and other climate data, codes to process it, model outputs, model codes, reconstructions, paleo-records, the codes involved in reconstructions etc."Read more of this story at Slashdot.

working