<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FClass_Definition%2FInheritance</id>
		<title>Java Tutorial/Class Definition/Inheritance - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FClass_Definition%2FInheritance"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/Inheritance&amp;action=history"/>
		<updated>2026-04-22T00:04:59Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/Inheritance&amp;diff=4228&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/Inheritance&amp;diff=4228&amp;oldid=prev"/>
				<updated>2010-06-01T05:00:57Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:00, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/Inheritance&amp;diff=4227&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/Inheritance&amp;diff=4227&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Accessibility ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Within a subclass you can access its superclass&amp;quot;s public and protected methods and fields&lt;br /&gt;
, but not the superclass&amp;quot;s private methods. &lt;br /&gt;
If the subclass and the superclass are in the same package, you can also access the superclass&amp;quot;s default methods and fields.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class P {&lt;br /&gt;
  public void publicMethod() {&lt;br /&gt;
  }&lt;br /&gt;
  protected void protectedMethod() {&lt;br /&gt;
  }&lt;br /&gt;
  void defaultMethod() {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class C extends P {&lt;br /&gt;
  public void testMethod() {&lt;br /&gt;
    publicMethod();&lt;br /&gt;
    protectedMethod();&lt;br /&gt;
    defaultMethod();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Cleanup and inheritance ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// From &amp;quot;Thinking in Java, 3rd ed.&amp;quot; (c) Bruce Eckel 2002&lt;br /&gt;
// www.BruceEckel.ru. See copyright notice in CopyRight.txt.&lt;br /&gt;
class Characteristic {&lt;br /&gt;
  private String s;&lt;br /&gt;
  Characteristic(String s) {&lt;br /&gt;
    this.s = s;&lt;br /&gt;
    System.out.println(&amp;quot;Creating Characteristic &amp;quot; + s);&lt;br /&gt;
  }&lt;br /&gt;
  protected void dispose() {&lt;br /&gt;
    System.out.println(&amp;quot;finalizing Characteristic &amp;quot; + s);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Description {&lt;br /&gt;
  private String s;&lt;br /&gt;
  Description(String s) {&lt;br /&gt;
    this.s = s;&lt;br /&gt;
    System.out.println(&amp;quot;Creating Description &amp;quot; + s);&lt;br /&gt;
  }&lt;br /&gt;
  protected void dispose() {&lt;br /&gt;
    System.out.println(&amp;quot;finalizing Description &amp;quot; + s);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class LivingCreature {&lt;br /&gt;
  private Characteristic p = new Characteristic(&amp;quot;is alive&amp;quot;);&lt;br /&gt;
  private Description t = new Description(&amp;quot;Basic Living Creature&amp;quot;);&lt;br /&gt;
  LivingCreature() {&lt;br /&gt;
    System.out.println(&amp;quot;LivingCreature()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  protected void dispose() {&lt;br /&gt;
    System.out.println(&amp;quot;LivingCreature dispose&amp;quot;);&lt;br /&gt;
    t.dispose();&lt;br /&gt;
    p.dispose();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Animal extends LivingCreature {&lt;br /&gt;
  private Characteristic p = new Characteristic(&amp;quot;has heart&amp;quot;);&lt;br /&gt;
  private Description t = new Description(&amp;quot;Animal not Vegetable&amp;quot;);&lt;br /&gt;
  Animal() {&lt;br /&gt;
    System.out.println(&amp;quot;Animal()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  protected void dispose() {&lt;br /&gt;
    System.out.println(&amp;quot;Animal dispose&amp;quot;);&lt;br /&gt;
    t.dispose();&lt;br /&gt;
    p.dispose();&lt;br /&gt;
    super.dispose();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Amphibian extends Animal {&lt;br /&gt;
  private Characteristic p = new Characteristic(&amp;quot;can live in water&amp;quot;);&lt;br /&gt;
  private Description t = new Description(&amp;quot;Both water and land&amp;quot;);&lt;br /&gt;
  Amphibian() {&lt;br /&gt;
    System.out.println(&amp;quot;Amphibian()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  protected void dispose() {&lt;br /&gt;
    System.out.println(&amp;quot;Amphibian dispose&amp;quot;);&lt;br /&gt;
    t.dispose();&lt;br /&gt;
    p.dispose();&lt;br /&gt;
    super.dispose();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Frog extends Amphibian {&lt;br /&gt;
  private Characteristic p = new Characteristic(&amp;quot;Croaks&amp;quot;);&lt;br /&gt;
  private Description t = new Description(&amp;quot;Eats Bugs&amp;quot;);&lt;br /&gt;
  public Frog() {&lt;br /&gt;
    System.out.println(&amp;quot;Frog()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  protected void dispose() {&lt;br /&gt;
    System.out.println(&amp;quot;Frog dispose&amp;quot;);&lt;br /&gt;
    t.dispose();&lt;br /&gt;
    p.dispose();&lt;br /&gt;
    super.dispose();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Frog frog = new Frog();&lt;br /&gt;
    System.out.println(&amp;quot;Bye!&amp;quot;);&lt;br /&gt;
    frog.dispose();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Creating Characteristic is alive&lt;br /&gt;
Creating Description Basic Living Creature&lt;br /&gt;
LivingCreature()&lt;br /&gt;
Creating Characteristic has heart&lt;br /&gt;
Creating Description Animal not Vegetable&lt;br /&gt;
Animal()&lt;br /&gt;
Creating Characteristic can live in water&lt;br /&gt;
Creating Description Both water and land&lt;br /&gt;
Amphibian()&lt;br /&gt;
Creating Characteristic Croaks&lt;br /&gt;
Creating Description Eats Bugs&lt;br /&gt;
Frog()&lt;br /&gt;
Bye!&lt;br /&gt;
Frog dispose&lt;br /&gt;
finalizing Description Eats Bugs&lt;br /&gt;
finalizing Characteristic Croaks&lt;br /&gt;
Amphibian dispose&lt;br /&gt;
finalizing Description Both water and land&lt;br /&gt;
finalizing Characteristic can live in water&lt;br /&gt;
Animal dispose&lt;br /&gt;
finalizing Description Animal not Vegetable&lt;br /&gt;
finalizing Characteristic has heart&lt;br /&gt;
LivingCreature dispose&lt;br /&gt;
finalizing Description Basic Living Creature&lt;br /&gt;
finalizing Characteristic is alive&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Combining composition and inheritance ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class A {&lt;br /&gt;
  A(int i) {&lt;br /&gt;
    System.out.println(&amp;quot;A constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class SubA extends A {&lt;br /&gt;
  SubA(int i) {&lt;br /&gt;
    super(i);&lt;br /&gt;
    System.out.println(&amp;quot;SubA constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class B {&lt;br /&gt;
  B(int i) {&lt;br /&gt;
    System.out.println(&amp;quot;B constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class SubB1 extends B {&lt;br /&gt;
  SubB1(int i) {&lt;br /&gt;
    super(i);&lt;br /&gt;
    System.out.println(&amp;quot;SubB1 constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class SubB2 extends B {&lt;br /&gt;
  SubB2(int i) {&lt;br /&gt;
    super(i);&lt;br /&gt;
    System.out.println(&amp;quot;SubB2 constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class SubB3 extends B {&lt;br /&gt;
  SubB3(int i) {&lt;br /&gt;
    super(i);&lt;br /&gt;
    System.out.println(&amp;quot;SubB3 constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
// A cultural way of doing something:&lt;br /&gt;
class C {&lt;br /&gt;
  C(int i) {&lt;br /&gt;
    System.out.println(&amp;quot;C constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class SubC extends C {&lt;br /&gt;
  private SubB1 subB1;&lt;br /&gt;
  private SubB2 subB2;&lt;br /&gt;
  private SubB3 subB3;&lt;br /&gt;
  private SubA subA;&lt;br /&gt;
  public SubC(int i) {&lt;br /&gt;
    super(i + 1);&lt;br /&gt;
    subB1 = new SubB1(i + 2);&lt;br /&gt;
    subB2 = new SubB2(i + 3);&lt;br /&gt;
    subB3 = new SubB3(i + 4);&lt;br /&gt;
    subA = new SubA(i + 5);&lt;br /&gt;
    System.out.println(&amp;quot;SubC constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass{&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    SubC x = new SubC(9);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;C constructor&lt;br /&gt;
B constructor&lt;br /&gt;
SubB1 constructor&lt;br /&gt;
B constructor&lt;br /&gt;
SubB2 constructor&lt;br /&gt;
B constructor&lt;br /&gt;
SubB3 constructor&lt;br /&gt;
A constructor&lt;br /&gt;
SubA constructor&lt;br /&gt;
SubC constructor&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Creating a Multilevel Hierarchy ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Box {&lt;br /&gt;
  private double width;&lt;br /&gt;
  private double height;&lt;br /&gt;
  private double depth;&lt;br /&gt;
  Box(Box ob) { // pass object to constructor&lt;br /&gt;
    width = ob.width;&lt;br /&gt;
    height = ob.height;&lt;br /&gt;
    depth = ob.depth;&lt;br /&gt;
  }&lt;br /&gt;
  Box(double w, double h, double d) {&lt;br /&gt;
    width = w;&lt;br /&gt;
    height = h;&lt;br /&gt;
    depth = d;&lt;br /&gt;
  }&lt;br /&gt;
  Box() {&lt;br /&gt;
    width = -1; // use -1 to indicate&lt;br /&gt;
    height = -1; // an uninitialized&lt;br /&gt;
    depth = -1; // box&lt;br /&gt;
  }&lt;br /&gt;
  Box(double len) {&lt;br /&gt;
    width = height = depth = len;&lt;br /&gt;
  }&lt;br /&gt;
  double volume() {&lt;br /&gt;
    return width * height * depth;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class BoxWeight extends Box {&lt;br /&gt;
  double weight; // weight of box&lt;br /&gt;
  BoxWeight(BoxWeight ob) { // pass object to constructor&lt;br /&gt;
    super(ob);&lt;br /&gt;
    weight = ob.weight;&lt;br /&gt;
  }&lt;br /&gt;
  BoxWeight(double w, double h, double d, double m) {&lt;br /&gt;
    super(w, h, d); // call superclass constructor&lt;br /&gt;
    weight = m;&lt;br /&gt;
  }&lt;br /&gt;
  BoxWeight() {&lt;br /&gt;
    super();&lt;br /&gt;
    weight = -1;&lt;br /&gt;
  }&lt;br /&gt;
  BoxWeight(double len, double m) {&lt;br /&gt;
    super(len);&lt;br /&gt;
    weight = m;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Shipment extends BoxWeight {&lt;br /&gt;
  double cost;&lt;br /&gt;
  Shipment(Shipment ob) { // pass object to constructor&lt;br /&gt;
    super(ob);&lt;br /&gt;
    cost = ob.cost;&lt;br /&gt;
  }&lt;br /&gt;
  Shipment(double w, double h, double d, double m, double c) {&lt;br /&gt;
    super(w, h, d, m); // call superclass constructor&lt;br /&gt;
    cost = c;&lt;br /&gt;
  }&lt;br /&gt;
  Shipment() {&lt;br /&gt;
    super();&lt;br /&gt;
    cost = -1;&lt;br /&gt;
  }&lt;br /&gt;
  Shipment(double len, double m, double c) {&lt;br /&gt;
    super(len, m);&lt;br /&gt;
    cost = c;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class DemoShipment {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Shipment shipment1 = new Shipment(10, 20, 15, 10, 3.41);&lt;br /&gt;
    Shipment shipment2 = new Shipment(2, 3, 4, 0.76, 1.28);&lt;br /&gt;
    double vol;&lt;br /&gt;
    vol = shipment1.volume();&lt;br /&gt;
    System.out.println(&amp;quot;Volume of shipment1 is &amp;quot; + vol);&lt;br /&gt;
    System.out.println(&amp;quot;Weight of shipment1 is &amp;quot; + shipment1.weight);&lt;br /&gt;
    System.out.println(&amp;quot;Shipping cost: $&amp;quot; + shipment1.cost);&lt;br /&gt;
    System.out.println();&lt;br /&gt;
    vol = shipment2.volume();&lt;br /&gt;
    System.out.println(&amp;quot;Volume of shipment2 is &amp;quot; + vol);&lt;br /&gt;
    System.out.println(&amp;quot;Weight of shipment2 is &amp;quot; + shipment2.weight);&lt;br /&gt;
    System.out.println(&amp;quot;Shipping cost: $&amp;quot; + shipment2.cost);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Demonstrate when constructors are called in a Multilevel Hierarchy ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class A {&lt;br /&gt;
  A() {&lt;br /&gt;
    System.out.println(&amp;quot;Inside A&amp;quot;s constructor.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class B extends A {&lt;br /&gt;
  B() {&lt;br /&gt;
    System.out.println(&amp;quot;Inside B&amp;quot;s constructor.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class C extends B {&lt;br /&gt;
  C() {&lt;br /&gt;
    System.out.println(&amp;quot;Inside C&amp;quot;s constructor.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class CallingCons {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    C c = new C();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Derived Class Constructors: Calling the Base Class Constructor ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Animal {&lt;br /&gt;
  public Animal(String aType) {&lt;br /&gt;
    type = new String(aType);&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;This is a &amp;quot; + type;&lt;br /&gt;
  }&lt;br /&gt;
  private String type;&lt;br /&gt;
}&lt;br /&gt;
class Dog extends Animal {&lt;br /&gt;
  public Dog(String aName) {&lt;br /&gt;
    super(&amp;quot;Dog&amp;quot;); &lt;br /&gt;
    name = aName; &lt;br /&gt;
    breed = &amp;quot;Unknown&amp;quot;; &lt;br /&gt;
  }&lt;br /&gt;
  public Dog(String aName, String aBreed) {&lt;br /&gt;
    super(&amp;quot;Dog&amp;quot;); &lt;br /&gt;
    name = aName;&lt;br /&gt;
    breed = aBreed;&lt;br /&gt;
  }&lt;br /&gt;
  private String name; &lt;br /&gt;
  private String breed;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Deriving a Class ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Animal {&lt;br /&gt;
  public Animal(String aType) {&lt;br /&gt;
    type = aType;&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;This is a &amp;quot; + type;&lt;br /&gt;
  }&lt;br /&gt;
  private String type;&lt;br /&gt;
}&lt;br /&gt;
class Dog extends Animal {&lt;br /&gt;
  public Dog(String name){&lt;br /&gt;
    super(name);&lt;br /&gt;
  }&lt;br /&gt;
  private String breed;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Inheritance ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;You extend a class by creating a new class.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;The former and the latter will then have a parent-child relationship.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;The original class is the parent class or the base class or the superclass.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;The new class is called a child class or a subclass or a derived class of the parent.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;The process of extending a class in object-oriented programming is called inheritance.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;In a subclass you can add new methods and new fields as well as override existing methods in the parent class to change their behaviors.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;Inheritance gives you the opportunity to add some functionality that does not exist in the original class.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;Inheritance can also change the behaviors of the existing class to better suit your needs.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;The subclass and the superclass has an &amp;quot;is-a&amp;quot; relationship.&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Inheritance and upcasting. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class A {&lt;br /&gt;
  public void play() {&lt;br /&gt;
  }&lt;br /&gt;
  static void tune(A i) {&lt;br /&gt;
    i.play();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
// Wind objects are instruments&lt;br /&gt;
// because they have the same interface:&lt;br /&gt;
class B extends A {&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    B flute = new B();&lt;br /&gt;
    A.tune(flute); // Upcasting&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Inheritance, constructors and arguments ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class A {&lt;br /&gt;
  A(int i) {&lt;br /&gt;
    System.out.println(&amp;quot;A constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class B extends A {&lt;br /&gt;
  B(int i) {&lt;br /&gt;
    super(i);&lt;br /&gt;
    System.out.println(&amp;quot;B constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class C extends B {&lt;br /&gt;
  C() {&lt;br /&gt;
    super(11);&lt;br /&gt;
    System.out.println(&amp;quot;C constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    C x = new C();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;A constructor&lt;br /&gt;
B constructor&lt;br /&gt;
C constructor&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Method Overriding ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;When you extends a class, you can change the behavior of a method in the parent class.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;This is called method overriding.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;This happens when you write in a subclass a method that has the same signature as a method in the parent class.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;If only the name is the same but the list of arguments is not, then it is method overloading.&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Overloading a base-class method name in a derived class does not hide the base-class versions. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class A {&lt;br /&gt;
  char doh(char c) {&lt;br /&gt;
    System.out.println(&amp;quot;doh(char)&amp;quot;);&lt;br /&gt;
    return &amp;quot;d&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  float doh(float f) {&lt;br /&gt;
    System.out.println(&amp;quot;doh(float)&amp;quot;);&lt;br /&gt;
    return 1.0f;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class B {}&lt;br /&gt;
class C extends A {&lt;br /&gt;
  void doh(B m) {&lt;br /&gt;
    System.out.println(&amp;quot;doh(B)&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    C b = new C();&lt;br /&gt;
    b.doh(1);&lt;br /&gt;
    b.doh(&amp;quot;x&amp;quot;);&lt;br /&gt;
    b.doh(1.0f);&lt;br /&gt;
    b.doh(new B());&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;doh(float)&lt;br /&gt;
doh(char)&lt;br /&gt;
doh(float)&lt;br /&gt;
doh(B)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Overriding a Base Class Method ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Animal {&lt;br /&gt;
  public Animal(String aType) {&lt;br /&gt;
    type = new String(aType);&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;This is a &amp;quot; + type;&lt;br /&gt;
  }&lt;br /&gt;
  private String type;&lt;br /&gt;
}&lt;br /&gt;
class Dog extends Animal {&lt;br /&gt;
  public Dog(String aName) {&lt;br /&gt;
    super(&amp;quot;Dog&amp;quot;);&lt;br /&gt;
    name = aName; &lt;br /&gt;
    breed = &amp;quot;Unknown&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  public Dog(String aName, String aBreed) {&lt;br /&gt;
    super(&amp;quot;Dog&amp;quot;); &lt;br /&gt;
    name = aName;&lt;br /&gt;
    breed = aBreed;&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;It&amp;quot;s &amp;quot; + name + &amp;quot; the &amp;quot; + breed;&lt;br /&gt;
  }&lt;br /&gt;
  private String name; &lt;br /&gt;
  private String breed;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  The extends Keyword ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;You extend a class by using the extends keyword in a class declaration,&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The Parent class&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Parent {&lt;br /&gt;
     }&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  The keyword super represents an instance of the direct superclass of the current object. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;You can explicitly call the parent&amp;quot;s constructor from a subclass&amp;quot;s constructor by using the super keyword.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;&amp;quot;super&amp;quot; must be the first statement in the constructor.&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Parent {&lt;br /&gt;
       public Parent(){&lt;br /&gt;
       &lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     public class Child extends Parent {&lt;br /&gt;
         public Child () {&lt;br /&gt;
           super();&lt;br /&gt;
         }&lt;br /&gt;
     }&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Type Casting ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;With objects, you can cast an instance of a subclass to its parent class.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;Casting an object to a parent class is called upcasting.&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Child child = new Child ();&lt;br /&gt;
Parent parent = child;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>