Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 
Search the JavaFAQ.nu
1000 Java Tips ebook

1000 Java Tips - Click here for the high resolution copy!1000 Java Tips - Click here for the high resolution copy!

Java Screensaver, take it here

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java programming articles and tips. Please take your copy here.

Take your copy of free "Java Technology Screensaver"!.

Easy Learn Java: Programming Articles, Examples and Tips - Page 318


Previous 1060 Stories (530 Pages, 2 Per Page) Next

Java: Constructors - super example

Go to all tips in Java Notes by Fred Swartz

Example of class without parameterless constructor

/////////////////// class without a parameterless constructor.
//  If any constructor is defined, the compiler doesn't
//  automatically create a default parameterless constructor.
class Parent {
    int _x;
    Parent(int x) {   // constructor
        _x = x;
    }
}

////////////////// class that must call super in constructor
class Child extends Parent {
    int _y;
    Child(int y) {  // WRONG, needs explicit call to super.
        super(0);
        _y = y;    
    }
}
In the example above, there is no explicit call to a constructor in the first line of constructor, so the compiler will insert a call to the parameterless constructor of the parent, but there is no parameterless parent constructor! Therefore this produces a compilation error. The problem can be fixed by changing the Child class.
////////////////// class that must call super in constructor
class Child extends Parent {
    int _y;
    Child(int y) {  // WRONG, needs explicit call to super.
        _y = y;    
    }
}
Or the Parent class can define a parameterless constructor.
/////////////////// class without a parameterless constructor.
//  If any constructor is defined, the compiler doesn't
//  automatically create a default parameterless constructor.
class Parent {
    int _x;
    Parent(int x) {   // constructor with parameter
        _x = x;
    }
    
    Parent() {        // constructor without parameters
        _x = 0;
    }
}
A better way to define the parameterless constructor is to call the parameterized constructor so that any changes that are made only have to be made in one constructor.
    Parent() {        // constructor without parameters
        this(0);
    }
}
Note that each of these constructors implicitly calls the parameterless constructor for its parent class, etc, until the Object class is finally reached.

7 comments | Printer Friendly Page  Send to a Friend | Score: 0
Posted by jalex on Thursday, March 10, 2005 (00:00:00) (30968 reads)

Java: Java Data Structures

Go to all tips in Java Notes by Fred Swartz

Three different names would have been better. The overall term for Java's data structure facilities is Collections. This is confusing because, in addition to describing the general data structure facilities, java.util.Collection is the name of an interface and java.util.Collections is the name of a class containing many data structure utility methods.

Don't write your own

Most data structure textbooks give students the impression that professional programmers implement basic data structures, such as linked lists, or write their own sort methods.

This is completely false! Many standard data structures and algorithms have already been written and are available in Java. Professional programmers use these library classes as building blocks for their application specific structures.

Textbooks give this distorted view because their emphasis is on understanding how data structures are build using only pointers/references and arrays. This is an excellent exercise; it is necessary to becoming a good programmer. But these textbooks often fail to emphaisze the predefined data structure libraries that programmers actually use.

You will, of course, often write data structures that reflect the nature of your problem, but use the library versions for the basic elements.

Productivity is much higher

To be a productive programmer, your first choice must be to use standard library data structures. In Java this means using the Collections classes and interfaces. If you can't find what you need built into Java, try one of the Alternative Data Structures.

You will always have to write some of your own data structures, but you can program faster, and produce more robust and readable programs by building on the work of others.

The Collections data structures are good, but ...

No primitive types. Collections data structures work only with objects, not primitive values. You can use the wrapper classes (automated in Java 5) or write your own class equivalents. The creation and garbage collection of these extra objects may add substantial overhead. There are a number of non-Sun implementations of data structures using primitives.

Pre-Java 5 Downcasting from Object A related problem is that the Object that is returned from a data structure must be downcast to whichever type you want. This is a constant annoyance, and is a form of weak-typing, which allows run-time type mismatches that should be caught at compile time. Generic types, as in C++ templates, are in Java 5 to enforce typing and remove the need for explicit casting.

Missing facilities Many obvious additions can be found in Alternative Data Structures.

History

Java support for data structures comes in three generations.

  1. The first version of Java came with a few important data structures in the java.util.* package (eg, Vector).
  2. Collections is the Java term for the data stucture classes, interfaces, and algorithms that were added to Java 1.2.
  3. Java 5 supports generics (templates), allowing data structures to be restricted to specific types, as well as a number of other structures (eg, Queue).


7 comments | Printer Friendly Page  Send to a Friend | Score: 0
Posted by jalex on Wednesday, March 09, 2005 (00:00:00) (3847 reads)

Previous 1060 Stories (530 Pages, 2 Per Page) Next

530| 529| 528| 527| 526| 525| 524| 523| 522| 521| 520| 519| 518| 517| 516| 515| 514| 513| 512| 511| 510| 509| 508| 507| 506| 505| 504| 503| 502| 501| 500| 499| 498| 497| 496| 495| 494| 493| 492| 491| 490| 489| 488| 487| 486| 485| 484| 483| 482| 481| 480| 479| 478| 477| 476| 475| 474| 473| 472| 471| 470| 469| 468| 467| 466| 465| 464| 463| 462| 461| 460| 459| 458| 457| 456| 455| 454| 453| 452| 451| 450| 449| 448| 447| 446| 445| 444| 443| 442| 441| 440| 439| 438| 437| 436| 435| 434| 433| 432| 431| 430| 429| 428| 427| 426| 425| 424| 423| 422| 421| 420| 419| 418| 417| 416| 415| 414| 413| 412| 411| 410| 409| 408| 407| 406| 405| 404| 403| 402| 401| 400| 399| 398| 397| 396| 395| 394| 393| 392| 391| 390| 389| 388| 387| 386| 385| 384| 383| 382| 381| 380| 379| 378| 377| 376| 375| 374| 373| 372| 371| 370| 369| 368| 367| 366| 365| 364| 363| 362| 361| 360| 359| 358| 357| 356| 355| 354| 353| 352| 351| 350| 349| 348| 347| 346| 345| 344| 343| 342| 341| 340| 339| 338| 337| 336| 335| 334| 333| 332| 331| 330| 329| 328| 327| 326| 325| 324| 323| 322| 321| 320| 319|
318
| 317| 316| 315| 314| 313| 312| 311| 310| 309| 308| 307| 306| 305| 304| 303| 302| 301| 300| 299| 298| 297| 296| 295| 294| 293| 292| 291| 290| 289| 288| 287| 286| 285| 284| 283| 282| 281| 280| 279| 278| 277| 276| 275| 274| 273| 272| 271| 270| 269| 268| 267| 266| 265| 264| 263| 262| 261| 260| 259| 258| 257| 256| 255| 254| 253| 252| 251| 250| 249| 248| 247| 246| 245| 244| 243| 242| 241| 240| 239| 238| 237| 236| 235| 234| 233| 232| 231| 230| 229| 228| 227| 226| 225| 224| 223| 222| 221| 220| 219| 218| 217| 216| 215| 214| 213| 212| 211| 210| 209| 208| 207| 206| 205| 204| 203| 202| 201| 200| 199| 198| 197| 196| 195| 194| 193| 192| 191| 190| 189| 188| 187| 186| 185| 184| 183| 182| 181| 180| 179| 178| 177| 176| 175| 174| 173| 172| 171| 170| 169| 168| 167| 166| 165| 164| 163| 162| 161| 160| 159| 158| 157| 156| 155| 154| 153| 152| 151| 150| 149| 148| 147| 146| 145| 144| 143| 142| 141| 140| 139| 138| 137| 136| 135| 134| 133| 132| 131| 130| 129| 128| 127| 126| 125| 124| 123| 122| 121| 120| 119| 118| 117| 116| 115| 114| 113| 112| 111| 110| 109| 108| 107| 106| 105| 104| 103| 102| 101| 100| 99| 98| 97| 96| 95| 94| 93| 92| 91| 90| 89| 88| 87| 86| 85| 84| 83| 82| 81| 80| 79| 78| 77| 76| 75| 74| 73| 72| 71| 70| 69| 68| 67| 66| 65| 64| 63| 62| 61| 60| 59| 58| 57| 56| 55| 54| 53| 52| 51| 50| 49| 48| 47| 46| 45| 44| 43| 42| 41| 40| 39| 38| 37| 36| 35| 34| 33| 32| 31| 30| 29| 28| 27| 26| 25| 24| 23| 22| 21| 20| 19| 18| 17| 16| 15| 14| 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2| 1|


Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy