<?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%2FClass%2FOverride_Polymorphism</id>
		<title>Java/Class/Override Polymorphism - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FClass%2FOverride_Polymorphism"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Class/Override_Polymorphism&amp;action=history"/>
		<updated>2026-04-21T15:40:56Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Class/Override_Polymorphism&amp;diff=7179&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Class/Override_Polymorphism&amp;diff=7179&amp;oldid=prev"/>
				<updated>2010-06-01T06:36:23Z</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;Версия 06:36, 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/Class/Override_Polymorphism&amp;diff=7178&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Class/Override_Polymorphism&amp;diff=7178&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:44Z</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;== It only looks like you can override a private or private final 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;
// : c06:FinalOverridingIllusion.java&lt;br /&gt;
// It only looks like you can override a private or private final method.&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 WithFinals {&lt;br /&gt;
  // Identical to &amp;quot;private&amp;quot; alone:&lt;br /&gt;
  private final void f() {&lt;br /&gt;
    System.out.println(&amp;quot;WithFinals.f()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  // Also automatically &amp;quot;final&amp;quot;:&lt;br /&gt;
  private void g() {&lt;br /&gt;
    System.out.println(&amp;quot;WithFinals.g()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class OverridingPrivate extends WithFinals {&lt;br /&gt;
  private final void f() {&lt;br /&gt;
    System.out.println(&amp;quot;OverridingPrivate.f()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  private void g() {&lt;br /&gt;
    System.out.println(&amp;quot;OverridingPrivate.g()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class OverridingPrivate2 extends OverridingPrivate {&lt;br /&gt;
  public final void f() {&lt;br /&gt;
    System.out.println(&amp;quot;OverridingPrivate2.f()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void g() {&lt;br /&gt;
    System.out.println(&amp;quot;OverridingPrivate2.g()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class FinalOverridingIllusion {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    OverridingPrivate2 op2 = new OverridingPrivate2();&lt;br /&gt;
    op2.f();&lt;br /&gt;
    op2.g();&lt;br /&gt;
    // You can upcast:&lt;br /&gt;
    OverridingPrivate op = op2;&lt;br /&gt;
    // But you can&amp;quot;t call the methods:&lt;br /&gt;
    //! op.f();&lt;br /&gt;
    //! op.g();&lt;br /&gt;
    // Same here:&lt;br /&gt;
    WithFinals wf = op2;&lt;br /&gt;
    //! wf.f();&lt;br /&gt;
    //! wf.g();&lt;br /&gt;
  }&lt;br /&gt;
} ///:~&lt;br /&gt;
&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;
== Method override demo ==&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 http://java.sun.ru/docs/books/tutorial/index.html */&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions are met:&lt;br /&gt;
 *&lt;br /&gt;
 * -Redistribution of source code must retain the above copyright notice, this&lt;br /&gt;
 *  list of conditions and the following disclaimer.&lt;br /&gt;
 *&lt;br /&gt;
 * -Redistribution in binary form must reproduce the above copyright notice,&lt;br /&gt;
 *  this list of conditions and the following disclaimer in the documentation&lt;br /&gt;
 *  and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 * Neither the name of Sun Microsystems, Inc. or the names of contributors may&lt;br /&gt;
 * be used to endorse or promote products derived from this software without&lt;br /&gt;
 * specific prior written permission.&lt;br /&gt;
 *&lt;br /&gt;
 * This software is provided &amp;quot;AS IS,&amp;quot; without a warranty of any kind. ALL&lt;br /&gt;
 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING&lt;br /&gt;
 * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE&lt;br /&gt;
 * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. (&amp;quot;SUN&amp;quot;)&lt;br /&gt;
 * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE&lt;br /&gt;
 * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS&lt;br /&gt;
 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST&lt;br /&gt;
 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,&lt;br /&gt;
 * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY&lt;br /&gt;
 * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,&lt;br /&gt;
 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.&lt;br /&gt;
 *&lt;br /&gt;
 * You acknowledge that this software is not designed, licensed or intended&lt;br /&gt;
 * for use in the design, construction, operation or maintenance of any&lt;br /&gt;
 * nuclear facility.&lt;br /&gt;
 */&lt;br /&gt;
public class Earth extends Planet {&lt;br /&gt;
    public static void hide() {&lt;br /&gt;
        System.out.println(&amp;quot;The hide method in Earth.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    public void override() {&lt;br /&gt;
        System.out.println(&amp;quot;The override method in Earth.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Earth myEarth = new Earth();&lt;br /&gt;
        Planet myPlanet = (Planet)myEarth;&lt;br /&gt;
        myPlanet.hide();                   &lt;br /&gt;
        myPlanet.override();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class Planet {&lt;br /&gt;
    public static void hide() {&lt;br /&gt;
        System.out.println(&amp;quot;The hide method in Planet.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    public void override() {&lt;br /&gt;
        System.out.println(&amp;quot;The override method in Planet.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&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;
== Override Shape ==&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;
&lt;br /&gt;
// : c10:Shapes.java&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 Shape {&lt;br /&gt;
  void draw() {&lt;br /&gt;
    System.out.println(this + &amp;quot;.draw()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Circle extends Shape {&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;Circle&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Square extends Shape {&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;Square&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Triangle extends Shape {&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;Triangle&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class Shapes {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    // Array of Object, not Shape:&lt;br /&gt;
    Object[] shapeList = { new Circle(), new Square(), new Triangle() };&lt;br /&gt;
    for (int i = 0; i &amp;lt; shapeList.length; i++)&lt;br /&gt;
      ((Shape) shapeList[i]).draw(); // Must cast&lt;br /&gt;
  }&lt;br /&gt;
} ///:~&lt;br /&gt;
&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;
== Polymorphism in Java ==&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;
// : c07:Shapes.java&lt;br /&gt;
// Polymorphism in Java.&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;
import java.util.Random;&lt;br /&gt;
class Shape {&lt;br /&gt;
  void draw() {&lt;br /&gt;
  }&lt;br /&gt;
  void erase() {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Circle extends Shape {&lt;br /&gt;
  void draw() {&lt;br /&gt;
    System.out.println(&amp;quot;Circle.draw()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  void erase() {&lt;br /&gt;
    System.out.println(&amp;quot;Circle.erase()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Square extends Shape {&lt;br /&gt;
  void draw() {&lt;br /&gt;
    System.out.println(&amp;quot;Square.draw()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  void erase() {&lt;br /&gt;
    System.out.println(&amp;quot;Square.erase()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Triangle extends Shape {&lt;br /&gt;
  void draw() {&lt;br /&gt;
    System.out.println(&amp;quot;Triangle.draw()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  void erase() {&lt;br /&gt;
    System.out.println(&amp;quot;Triangle.erase()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
// A &amp;quot;factory&amp;quot; that randomly creates shapes:&lt;br /&gt;
class RandomShapeGenerator {&lt;br /&gt;
  private Random rand = new Random();&lt;br /&gt;
  public Shape next() {&lt;br /&gt;
    switch (rand.nextInt(3)) {&lt;br /&gt;
    default:&lt;br /&gt;
    case 0:&lt;br /&gt;
      return new Circle();&lt;br /&gt;
    case 1:&lt;br /&gt;
      return new Square();&lt;br /&gt;
    case 2:&lt;br /&gt;
      return new Triangle();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class ShapesDemo {&lt;br /&gt;
  private static RandomShapeGenerator gen = new RandomShapeGenerator();&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Shape[] s = new Shape[9];&lt;br /&gt;
    // Fill up the array with shapes:&lt;br /&gt;
    for (int i = 0; i &amp;lt; s.length; i++)&lt;br /&gt;
      s[i] = gen.next();&lt;br /&gt;
    // Make polymorphic method calls:&lt;br /&gt;
    for (int i = 0; i &amp;lt; s.length; i++)&lt;br /&gt;
      s[i].draw();&lt;br /&gt;
  }&lt;br /&gt;
} ///:~&lt;br /&gt;
&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;/div&gt;</summary>
			</entry>

	</feed>