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

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Class/Constructor&amp;diff=7171&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Class/Constructor&amp;diff=7171&amp;oldid=prev"/>
				<updated>2010-06-01T06:36:19Z</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/Constructor&amp;diff=7170&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/Constructor&amp;diff=7170&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;== A constructor for copying an object of the same ==&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;
// : appendixa:CopyConstructor.java&lt;br /&gt;
// A constructor for copying an object of the same&lt;br /&gt;
// type, as an attempt to create a local copy.&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.lang.reflect.Constructor;&lt;br /&gt;
class FruitQualities {&lt;br /&gt;
  private int weight;&lt;br /&gt;
  private int color;&lt;br /&gt;
  private int firmness;&lt;br /&gt;
  private int ripeness;&lt;br /&gt;
  private int smell;&lt;br /&gt;
  // etc.&lt;br /&gt;
  public FruitQualities() { // Default constructor&lt;br /&gt;
    // Do something meaningful...&lt;br /&gt;
  }&lt;br /&gt;
  // Other constructors:&lt;br /&gt;
  // ...&lt;br /&gt;
  // Copy constructor:&lt;br /&gt;
  public FruitQualities(FruitQualities f) {&lt;br /&gt;
    weight = f.weight;&lt;br /&gt;
    color = f.color;&lt;br /&gt;
    firmness = f.firmness;&lt;br /&gt;
    ripeness = f.ripeness;&lt;br /&gt;
    smell = f.smell;&lt;br /&gt;
    // etc.&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Seed {&lt;br /&gt;
  // Members...&lt;br /&gt;
  public Seed() { /* Default constructor */&lt;br /&gt;
  }&lt;br /&gt;
  public Seed(Seed s) { /* Copy constructor */&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Fruit {&lt;br /&gt;
  private FruitQualities fq;&lt;br /&gt;
  private int seeds;&lt;br /&gt;
  private Seed[] s;&lt;br /&gt;
  public Fruit(FruitQualities q, int seedCount) {&lt;br /&gt;
    fq = q;&lt;br /&gt;
    seeds = seedCount;&lt;br /&gt;
    s = new Seed[seeds];&lt;br /&gt;
    for (int i = 0; i &amp;lt; seeds; i++)&lt;br /&gt;
      s[i] = new Seed();&lt;br /&gt;
  }&lt;br /&gt;
  // Other constructors:&lt;br /&gt;
  // ...&lt;br /&gt;
  // Copy constructor:&lt;br /&gt;
  public Fruit(Fruit f) {&lt;br /&gt;
    fq = new FruitQualities(f.fq);&lt;br /&gt;
    seeds = f.seeds;&lt;br /&gt;
    s = new Seed[seeds];&lt;br /&gt;
    // Call all Seed copy-constructors:&lt;br /&gt;
    for (int i = 0; i &amp;lt; seeds; i++)&lt;br /&gt;
      s[i] = new Seed(f.s[i]);&lt;br /&gt;
    // Other copy-construction activities...&lt;br /&gt;
  }&lt;br /&gt;
  // To allow derived constructors (or other&lt;br /&gt;
  // methods) to put in different qualities:&lt;br /&gt;
  protected void addQualities(FruitQualities q) {&lt;br /&gt;
    fq = q;&lt;br /&gt;
  }&lt;br /&gt;
  protected FruitQualities getQualities() {&lt;br /&gt;
    return fq;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Tomato extends Fruit {&lt;br /&gt;
  public Tomato() {&lt;br /&gt;
    super(new FruitQualities(), 100);&lt;br /&gt;
  }&lt;br /&gt;
  public Tomato(Tomato t) { // Copy-constructor&lt;br /&gt;
    super(t); // Upcast for base copy-constructor&lt;br /&gt;
    // Other copy-construction activities...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class ZebraQualities extends FruitQualities {&lt;br /&gt;
  private int stripedness;&lt;br /&gt;
  public ZebraQualities() { // Default constructor&lt;br /&gt;
    super();&lt;br /&gt;
    // do something meaningful...&lt;br /&gt;
  }&lt;br /&gt;
  public ZebraQualities(ZebraQualities z) {&lt;br /&gt;
    super(z);&lt;br /&gt;
    stripedness = z.stripedness;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class GreenZebra extends Tomato {&lt;br /&gt;
  public GreenZebra() {&lt;br /&gt;
    addQualities(new ZebraQualities());&lt;br /&gt;
  }&lt;br /&gt;
  public GreenZebra(GreenZebra g) {&lt;br /&gt;
    super(g); // Calls Tomato(Tomato)&lt;br /&gt;
    // Restore the right qualities:&lt;br /&gt;
    addQualities(new ZebraQualities());&lt;br /&gt;
  }&lt;br /&gt;
  public void evaluate() {&lt;br /&gt;
    ZebraQualities zq = (ZebraQualities) getQualities();&lt;br /&gt;
    // Do something with the qualities&lt;br /&gt;
    // ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class CopyConstructor {&lt;br /&gt;
  public static void ripen(Tomato t) {&lt;br /&gt;
    // Use the &amp;quot;copy constructor&amp;quot;:&lt;br /&gt;
    t = new Tomato(t);&lt;br /&gt;
    System.out.println(&amp;quot;In ripen, t is a &amp;quot; + t.getClass().getName());&lt;br /&gt;
  }&lt;br /&gt;
  public static void slice(Fruit f) {&lt;br /&gt;
    f = new Fruit(f); // Hmmm... will this work?&lt;br /&gt;
    System.out.println(&amp;quot;In slice, f is a &amp;quot; + f.getClass().getName());&lt;br /&gt;
  }&lt;br /&gt;
  public static void ripen2(Tomato t) {&lt;br /&gt;
    try {&lt;br /&gt;
      Class c = t.getClass();&lt;br /&gt;
      // Use the &amp;quot;copy constructor&amp;quot;:&lt;br /&gt;
      Constructor ct = c.getConstructor(new Class[] { c });&lt;br /&gt;
      Object obj = ct.newInstance(new Object[] { t });&lt;br /&gt;
      System.out.println(&amp;quot;In ripen2, t is a &amp;quot; + obj.getClass().getName());&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      System.out.println(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void slice2(Fruit f) {&lt;br /&gt;
    try {&lt;br /&gt;
      Class c = f.getClass();&lt;br /&gt;
      Constructor ct = c.getConstructor(new Class[] { c });&lt;br /&gt;
      Object obj = ct.newInstance(new Object[] { f });&lt;br /&gt;
      System.out.println(&amp;quot;In slice2, f is a &amp;quot; + obj.getClass().getName());&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      System.out.println(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Tomato tomato = new Tomato();&lt;br /&gt;
    ripen(tomato); // OK&lt;br /&gt;
    slice(tomato); // OOPS!&lt;br /&gt;
    ripen2(tomato); // OK&lt;br /&gt;
    slice2(tomato); // OK&lt;br /&gt;
    GreenZebra g = new GreenZebra();&lt;br /&gt;
    ripen(g); // OOPS!&lt;br /&gt;
    slice(g); // OOPS!&lt;br /&gt;
    ripen2(g); // OK&lt;br /&gt;
    slice2(g); // OK&lt;br /&gt;
    g.evaluate();&lt;br /&gt;
  }&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;
== Constructor calls during 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;
 &lt;br /&gt;
// : c06:Cartoon.java&lt;br /&gt;
// Constructor calls during inheritance.&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 Art {&lt;br /&gt;
  Art() {&lt;br /&gt;
    System.out.println(&amp;quot;Art constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Drawing extends Art {&lt;br /&gt;
  Drawing() {&lt;br /&gt;
    System.out.println(&amp;quot;Drawing constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class Cartoon extends Drawing {&lt;br /&gt;
  public Cartoon() {&lt;br /&gt;
    System.out.println(&amp;quot;Cartoon constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Cartoon x = new Cartoon();&lt;br /&gt;
  }&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;
== Constructor initialization with composition ==&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;
// : c06:Bath.java&lt;br /&gt;
// Constructor initialization with composition.&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 Soap {&lt;br /&gt;
  private String s;&lt;br /&gt;
  Soap() {&lt;br /&gt;
    System.out.println(&amp;quot;Soap()&amp;quot;);&lt;br /&gt;
    s = new String(&amp;quot;Constructed&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return s;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class Bath {&lt;br /&gt;
  private String // Initializing at point of definition:&lt;br /&gt;
      s1 = new String(&amp;quot;Happy&amp;quot;), s2 = &amp;quot;Happy&amp;quot;, s3, s4;&lt;br /&gt;
  private Soap castille;&lt;br /&gt;
  private int i;&lt;br /&gt;
  private float toy;&lt;br /&gt;
  public Bath() {&lt;br /&gt;
    System.out.println(&amp;quot;Inside Bath()&amp;quot;);&lt;br /&gt;
    s3 = new String(&amp;quot;Joy&amp;quot;);&lt;br /&gt;
    i = 47;&lt;br /&gt;
    toy = 3.14f;&lt;br /&gt;
    castille = new Soap();&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    if (s4 == null) // Delayed initialization:&lt;br /&gt;
      s4 = new String(&amp;quot;Joy&amp;quot;);&lt;br /&gt;
    return &amp;quot;s1 = &amp;quot; + s1 + &amp;quot;\n&amp;quot; + &amp;quot;s2 = &amp;quot; + s2 + &amp;quot;\n&amp;quot; + &amp;quot;s3 = &amp;quot; + s3 + &amp;quot;\n&amp;quot;&lt;br /&gt;
        + &amp;quot;s4 = &amp;quot; + s4 + &amp;quot;\n&amp;quot; + &amp;quot;i = &amp;quot; + i + &amp;quot;\n&amp;quot; + &amp;quot;toy = &amp;quot; + toy&lt;br /&gt;
        + &amp;quot;\n&amp;quot; + &amp;quot;castille = &amp;quot; + castille;&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Bath b = new Bath();&lt;br /&gt;
    System.out.println(b);&lt;br /&gt;
  }&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;
== Constructors and polymorphism don&amp;quot;t produce what you might expect ==&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;
// : c07:PolyConstructors.java&lt;br /&gt;
// Constructors and polymorphism don&amp;quot;t produce what you might expect.&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;
abstract class Glyph {&lt;br /&gt;
  abstract void draw();&lt;br /&gt;
  Glyph() {&lt;br /&gt;
    System.out.println(&amp;quot;Glyph() before draw()&amp;quot;);&lt;br /&gt;
    draw();&lt;br /&gt;
    System.out.println(&amp;quot;Glyph() after draw()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class RoundGlyph extends Glyph {&lt;br /&gt;
  private int radius = 1;&lt;br /&gt;
  RoundGlyph(int r) {&lt;br /&gt;
    radius = r;&lt;br /&gt;
    System.out.println(&amp;quot;RoundGlyph.RoundGlyph(), radius = &amp;quot; + radius);&lt;br /&gt;
  }&lt;br /&gt;
  void draw() {&lt;br /&gt;
    System.out.println(&amp;quot;RoundGlyph.draw(), radius = &amp;quot; + radius);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class PolyConstructors {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    new RoundGlyph(5);&lt;br /&gt;
  }&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;
== Constructors can have 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;
 &lt;br /&gt;
// : c04:SimpleConstructor2.java&lt;br /&gt;
// Constructors can have arguments.&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 Rock2 {&lt;br /&gt;
  Rock2(int i) {&lt;br /&gt;
    System.out.println(&amp;quot;Creating Rock number &amp;quot; + i);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class SimpleConstructor2 {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;
      new Rock2(i);&lt;br /&gt;
  }&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;
== Create a new instance of a class by calling a constructor with 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;
   &lt;br /&gt;
import java.lang.reflect.Constructor;&lt;br /&gt;
/**&lt;br /&gt;
 * Handy reflection routines.&lt;br /&gt;
 */&lt;br /&gt;
public abstract class Reflect {&lt;br /&gt;
  /**&lt;br /&gt;
   * Create a new instance of a class by calling a constructor with arguments.&lt;br /&gt;
   */&lt;br /&gt;
  public static Object newInstance(String className, Class[] signature, Object[] args)&lt;br /&gt;
      throws Exception {&lt;br /&gt;
    Class cls = Class.forName(className);&lt;br /&gt;
    Constructor constructor = cls.getConstructor(signature);&lt;br /&gt;
    return constructor.newInstance(args);&lt;br /&gt;
  }&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;
== Demonstration of a simple 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;
 &lt;br /&gt;
// : c04:SimpleConstructor.java&lt;br /&gt;
// Demonstration of a simple constructor.&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 Rock {&lt;br /&gt;
  Rock() { // This is the constructor&lt;br /&gt;
    System.out.println(&amp;quot;Creating Rock&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class SimpleConstructor {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;
      new Rock();&lt;br /&gt;
  }&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;
== Order of constructor calls ==&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;
// : c07:Sandwich.java&lt;br /&gt;
// Order of constructor calls.&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 Meal {&lt;br /&gt;
  Meal() {&lt;br /&gt;
    System.out.println(&amp;quot;Meal()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Bread {&lt;br /&gt;
  Bread() {&lt;br /&gt;
    System.out.println(&amp;quot;Bread()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Cheese {&lt;br /&gt;
  Cheese() {&lt;br /&gt;
    System.out.println(&amp;quot;Cheese()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Lettuce {&lt;br /&gt;
  Lettuce() {&lt;br /&gt;
    System.out.println(&amp;quot;Lettuce()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Lunch extends Meal {&lt;br /&gt;
  Lunch() {&lt;br /&gt;
    System.out.println(&amp;quot;Lunch()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class PortableLunch extends Lunch {&lt;br /&gt;
  PortableLunch() {&lt;br /&gt;
    System.out.println(&amp;quot;PortableLunch()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class Sandwich extends PortableLunch {&lt;br /&gt;
  private Bread b = new Bread();&lt;br /&gt;
  private Cheese c = new Cheese();&lt;br /&gt;
  private Lettuce l = new Lettuce();&lt;br /&gt;
  public Sandwich() {&lt;br /&gt;
    System.out.println(&amp;quot;Sandwich()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    new Sandwich();&lt;br /&gt;
  }&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;
== Paying attention to exceptions in constructors ==&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;
// : c09:Cleanup.java&lt;br /&gt;
// Paying attention to exceptions in constructors.&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.io.BufferedReader;&lt;br /&gt;
import java.io.FileNotFoundException;&lt;br /&gt;
import java.io.FileReader;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
class InputFile {&lt;br /&gt;
  private BufferedReader in;&lt;br /&gt;
  public InputFile(String fname) throws Exception {&lt;br /&gt;
    try {&lt;br /&gt;
      in = new BufferedReader(new FileReader(fname));&lt;br /&gt;
      // Other code that might throw exceptions&lt;br /&gt;
    } catch (FileNotFoundException e) {&lt;br /&gt;
      System.err.println(&amp;quot;Could not open &amp;quot; + fname);&lt;br /&gt;
      // Wasn&amp;quot;t open, so don&amp;quot;t close it&lt;br /&gt;
      throw e;&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      // All other exceptions must close it&lt;br /&gt;
      try {&lt;br /&gt;
        in.close();&lt;br /&gt;
      } catch (IOException e2) {&lt;br /&gt;
        System.err.println(&amp;quot;in.close() unsuccessful&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      throw e; // Rethrow&lt;br /&gt;
    } finally {&lt;br /&gt;
      // Don&amp;quot;t close it here!!!&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public String getLine() {&lt;br /&gt;
    String s;&lt;br /&gt;
    try {&lt;br /&gt;
      s = in.readLine();&lt;br /&gt;
    } catch (IOException e) {&lt;br /&gt;
      throw new RuntimeException(&amp;quot;readLine() failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    return s;&lt;br /&gt;
  }&lt;br /&gt;
  public void dispose() {&lt;br /&gt;
    try {&lt;br /&gt;
      in.close();&lt;br /&gt;
      System.out.println(&amp;quot;dispose() successful&amp;quot;);&lt;br /&gt;
    } catch (IOException e2) {&lt;br /&gt;
      throw new RuntimeException(&amp;quot;in.close() failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class Cleanup {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    try {&lt;br /&gt;
      InputFile in = new InputFile(&amp;quot;Cleanup.java&amp;quot;);&lt;br /&gt;
      String s;&lt;br /&gt;
      int i = 1;&lt;br /&gt;
      while ((s = in.getLine()) != null)&lt;br /&gt;
        ; // Perform line-by-line processing here...&lt;br /&gt;
      in.dispose();&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      System.err.println(&amp;quot;Caught Exception in main&amp;quot;);&lt;br /&gt;
      e.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
  }&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;
== Show Constructors conflicting ==&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;
/*&lt;br /&gt;
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.ru/, 1996-2002.&lt;br /&gt;
 * All rights reserved. Software written by Ian F. Darwin and others.&lt;br /&gt;
 * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $&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&lt;br /&gt;
 * are met:&lt;br /&gt;
 * 1. Redistributions of source code must retain the above copyright&lt;br /&gt;
 *    notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 * 2. Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *    notice, this list of conditions and the following disclaimer in the&lt;br /&gt;
 *    documentation and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS&amp;quot;&amp;quot;&lt;br /&gt;
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED&lt;br /&gt;
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS&lt;br /&gt;
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR&lt;br /&gt;
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF&lt;br /&gt;
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS&lt;br /&gt;
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN&lt;br /&gt;
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)&lt;br /&gt;
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE&lt;br /&gt;
 * POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 * &lt;br /&gt;
 * Java, the Duke mascot, and all variants of Sun&amp;quot;s Java &amp;quot;steaming coffee&lt;br /&gt;
 * cup&amp;quot; logo are trademarks of Sun Microsystems. Sun&amp;quot;s, and James Gosling&amp;quot;s,&lt;br /&gt;
 * pioneering role in inventing and promulgating (and standardizing) the Java &lt;br /&gt;
 * language and environment is gratefully acknowledged.&lt;br /&gt;
 * &lt;br /&gt;
 * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&amp;amp;T, for&lt;br /&gt;
 * inventing predecessor languages C and C++ is also gratefully acknowledged.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/** Show Constructors conflicting */&lt;br /&gt;
public class Constructors {&lt;br /&gt;
  /** Constructor */&lt;br /&gt;
  public Constructors() {&lt;br /&gt;
    System.out.println(&amp;quot;In the constructor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  /** Constructor that throws */&lt;br /&gt;
  public Constructors(int value) {&lt;br /&gt;
    if (value &amp;lt; 0)&lt;br /&gt;
      throw new IllegalArgumentException(&amp;quot;Constructors: value &amp;lt; 0&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  /** Not a Constructor, because of void */&lt;br /&gt;
  public void Constructors() {  // EXPECT COMPILE ERROR some compilers&lt;br /&gt;
    System.out.println(&amp;quot;In void Constructor()&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  void method1() {&lt;br /&gt;
    for (int i=0; i&amp;lt;5; i++)&lt;br /&gt;
      System.out.println(i);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] a) {&lt;br /&gt;
    Constructors l = new Constructors();&lt;br /&gt;
    l.method1();&lt;br /&gt;
    l.Constructors();&lt;br /&gt;
    new Constructors(-1);    // expect Exception&lt;br /&gt;
  }&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;
== Show that if your class has no constructors, your superclass constructors still get called ==&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;
/*&lt;br /&gt;
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.ru/, 1996-2002.&lt;br /&gt;
 * All rights reserved. Software written by Ian F. Darwin and others.&lt;br /&gt;
 * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $&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&lt;br /&gt;
 * are met:&lt;br /&gt;
 * 1. Redistributions of source code must retain the above copyright&lt;br /&gt;
 *    notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 * 2. Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *    notice, this list of conditions and the following disclaimer in the&lt;br /&gt;
 *    documentation and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS&amp;quot;&amp;quot;&lt;br /&gt;
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED&lt;br /&gt;
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS&lt;br /&gt;
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR&lt;br /&gt;
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF&lt;br /&gt;
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS&lt;br /&gt;
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN&lt;br /&gt;
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)&lt;br /&gt;
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE&lt;br /&gt;
 * POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 * &lt;br /&gt;
 * Java, the Duke mascot, and all variants of Sun&amp;quot;s Java &amp;quot;steaming coffee&lt;br /&gt;
 * cup&amp;quot; logo are trademarks of Sun Microsystems. Sun&amp;quot;s, and James Gosling&amp;quot;s,&lt;br /&gt;
 * pioneering role in inventing and promulgating (and standardizing) the Java &lt;br /&gt;
 * language and environment is gratefully acknowledged.&lt;br /&gt;
 * &lt;br /&gt;
 * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&amp;amp;T, for&lt;br /&gt;
 * inventing predecessor languages C and C++ is also gratefully acknowledged.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/** Show that if your class has no constructors, your superclass&amp;quot;&lt;br /&gt;
 * constructors still get called.&lt;br /&gt;
 */&lt;br /&gt;
public class InheritConstructor extends SomeOtherClass {&lt;br /&gt;
  public static void main(String[] c) {&lt;br /&gt;
    new InheritConstructor().run();&lt;br /&gt;
  }&lt;br /&gt;
  public void run() {&lt;br /&gt;
    System.out.println(&amp;quot;In InheritConstructor::run&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
// This is the class that we extend.&lt;br /&gt;
class SomeOtherClass {&lt;br /&gt;
  SomeOtherClass() {&lt;br /&gt;
    System.out.println(&amp;quot;In SomeOtherClass::&amp;lt;init&amp;gt;&amp;quot;);&lt;br /&gt;
  }&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>