★ India’s Student Guidance Platform

Constructors in Java — ICSE Class 10 Computer Applications

Constructors in Java — ICSE Class 10 Computer Applications

Pichhle chapter mein aapne methods banaye — object ka kaam karne wale tukde. Lekin ek sawaal reh gaya tha: jab new se object banta hai, us pehle hi pal mein uske data members ke andar kya hota hai? Kaun unhein pehli value deta hai? Yeh kaam constructor ka hai. A constructor is a special block that runs automatically the moment an object is created, and its whole job is to put that object into a usable starting state. This chapter covers Unit 4, Constructors, of the ICSE Class 10 Computer Applications syllabus (subject code 86).

Pehle ye do chapters clear hone chahiye: Operators and Expressions in Java aur User-Defined Methods — constructor inhi dono par khada hota hai.

Why Constructors Exist

Ek object banane ke baad agar aapko uski har value alag-alag set karni pade — s.rollNo = 17; s.name = "Aarav"; — toh do dikkatein aati hain. Pehli, aap koi line bhoolne par object aadha-adhura reh jaata hai. Doosri, har baar object banane wale ko yaad rakhna padta hai ki kaun-kaun si values bharni hain.

Constructor yeh zimmedari class ke andar le aata hai. Object banaya, aur uske saath hi values bhar gayin — ek hi line mein, bina bhoolne ki gunjaish ke.

Key Rule

A constructor initialises an object. It does not create the object — new creates it and allocates the memory. Constructor uske turant baad chalta hai aur us khaali object ko values se bharta hai. Yeh fark one-mark questions mein poochha jaata hai.

What Java Does If You Write No Constructor

Agar aap koi constructor likhte hi nahi, toh Java khud ek chup-chaap constructor bana deta hai — ise default constructor kehte hain. Woh kuch khaas nahi karta; bas har data member ko uski type ki default value de deta hai.

Worked Example 1 — A class with no constructor at all

class C1
{
    int rollNo;
    String name;

    public static void main(String args[])
    {
        C1 s = new C1();
        System.out.println("rollNo = " + s.rollNo);
        System.out.println("name   = " + s.name);
    }
}

Output

rollNo = 0
name   = null

Object ban gaya, program chala — koi error nahi. Java ne apna default constructor laga diya, jisne rollNo ko 0 aur name ko null kar diya.

Data type Default value
byte, short, int, long 0
float, double 0.0
char the null character '\u0000', jo screen par khaali dikhta hai
boolean false
String and any other object null
Common Mistake

Yeh default values sirf data members ko milti hain. Local variables — method ya constructor ke andar declare kiye gaye variables — ko koi default value nahi milti. Unhein bina value diye use karne par compiler saaf mana kar deta hai: “variable may not have been initialized”.

The Rules of a Constructor

Constructor dikhne mein method jaisa hi hai, lekin uske teen niyam usse alag kar dete hain. Inhein yaad rakhiye — yahi definition question ka jawaab hai.

  • Naam class ke naam ke bilkul barabar hota hai — aur Java case-sensitive hai, isliye class Student ke liye constructor Student() hi hoga, student() nahi. Chhota ‘s’ likha toh woh constructor raha hi nahi.
  • Koi return type nahivoid bhi nahi. Yeh sabse zyada galti wali baat hai.
  • Apne aap chalta hai jab new se object banta hai. Aap use apne haath se obj.ClassName() likh kar nahi bula sakte.
Worked Example 2 — Writing your own no-argument constructor

class C2
{
    int rollNo;
    String name;

    C2()
    {
        rollNo = 1;
        name = "Not Assigned";
        System.out.println("Default constructor ran");
    }

    void show()
    {
        System.out.println(rollNo + " : " + name);
    }

    public static void main(String args[])
    {
        C2 s = new C2();
        s.show();
    }
}

Output

Default constructor ran
1 : Not Assigned

Dhyaan dijiye ki C2() ko kisi ne bulaya nahi — new C2() likhte hi woh khud chal gaya, aur pehli line pehle chhap gayi. Ab rollNo aur name mein Java ki default values nahi, aapki chuni hui values hain.

Common Mistake

Constructor ke aage galti se void lagana. void C2() likhte hi woh constructor rehta hi nahi — woh ek saadharan method ban jaata hai jiska naam ittefaqan class jaisa hai. Compiler koi error nahi dega, isliye galti pakadti bhi nahi. Object banega, lekin values default hi rahengi, aur output galat aayega. Yeh ICSE paper ka favourite trap hai.
Worked Example 3 — The void trap, actually run

class E1
{
    int v;

    void E1(int x)      // NOT a constructor — it is a method
    {
        v = x;
    }

    public static void main(String args[])
    {
        E1 ob = new E1();
        System.out.println("v = " + ob.v);
    }
}

Output

v = 0

Program chal gaya aur 0 chhaap diya — kyunki void E1(int x) ek method hai jise kabhi bulaya hi nahi gaya. Java ne apna default constructor lagaya aur v ko 0 kar diya. Ek chhote se void ne poora matlab badal diya.

Types of Constructors

ICSE ke liye aapko teen naam pehchaanne hain, aur unke beech ka fark saaf hona chahiye.

Type Kaun likhta hai Kya karta hai
Default constructor Java, apne aap — sirf tab jab aapne koi constructor na likha ho Har data member ko uski type ki default value deta hai
Non-parameterised constructor Aap, khaali brackets ke saath Aapki chuni hui fixed values bharta hai — har object ko wahi shuruaat milti hai
Parameterised constructor Aap, brackets mein parameters ke saath Object banate waqt di gayi values bharta hai — har object apni alag shuruaat le sakta hai
Exam Tip

Ek shabd ka dhyaan rakhiye. Upar wali table technically sahi hai — asli “default constructor” wahi hai jo Java khud banata hai. Lekin school aur board ke sawaalon mein aksar khaali brackets wale kisi bhi constructor ko hi “default constructor” keh diya jaata hai. Isliye agar paper mein likha ho “write a default constructor”, toh unka matlab hota hai non-parameterised constructor — aap ClassName() { … } likh dijiye.
Exam Tip

Jaise hi aap koi bhi ek constructor apne haath se likh dete hain, Java apna default constructor hata leta hai. Iska seedha natija: agar aapne sirf C3(int r, String n) likha hai, toh new C3() ab compile nahi hoga. Zaroorat ho toh khaali wala constructor bhi khud likhna padega.
Worked Example 4 — A parameterised constructor giving each object its own start

class C3
{
    int rollNo;
    String name;

    C3(int r, String n)
    {
        rollNo = r;
        name = n;
    }

    void show()
    {
        System.out.println(rollNo + " : " + name);
    }

    public static void main(String args[])
    {
        C3 a = new C3(17, "Aarav");
        C3 b = new C3(23, "Meera");
        a.show();
        b.show();
    }
}

Output

17 : Aarav
23 : Meera

Ek hi class, do objects, dono ki apni alag values — aur wo bhi ek-ek line mein. Yehi parameterised constructor ka poora faayda hai. Agar aap ab new C3() likhne ki koshish karein toh compiler saaf mana kar dega, kyunki apna constructor likhte hi Java wala default constructor gaayab ho chuka hai.

Constructor Overloading

Methods ki tarah constructors bhi overload ho sakte hain. Ek hi class mein kai constructors reh sakte hain, bas sab ki parameter list alag honi chahiye — number, type ya order mein.

Worked Example 5 — Three constructors, one class

class C4
{
    int length, breadth;

    C4()
    {
        length = 1;
        breadth = 1;
    }

    C4(int side)
    {
        length = side;
        breadth = side;
    }

    C4(int l, int b)
    {
        length = l;
        breadth = b;
    }

    void area()
    {
        System.out.println(length + " x " + breadth + " = " + (length * breadth));
    }

    public static void main(String args[])
    {
        C4 p = new C4();
        C4 q = new C4(6);
        C4 r = new C4(8, 3);
        p.area();
        q.area();
        r.area();
    }
}

Output

1 x 1 = 1
6 x 6 = 36
8 x 3 = 24

Compiler har new par arguments dekh kar sahi constructor chunta hai — khaali brackets par pehla, ek int par doosra, do int par teesra. Aur dhyaan dijiye: yahan khaali wala constructor humne khud likha hai, kyunki apna koi bhi constructor likhte hi Java apna wala hata deta hai.

The this Keyword

Ab ek chhoti si uljhan. Aksar parameter ka naam wahi rakhna sabse saaf lagta hai jo data member ka hai — price ke liye price. Lekin tab ek dikkat aati hai: constructor ke andar price likhne par Java parameter ko samajhta hai, data member ko nahi. Parameter data member ko chhupa deta hai. Iska ilaaj this keyword hai, jiska matlab hai “yeh wala object”.

Worked Example 6 — With this and without it

With this:

class C5
{
    int x;

    C5(int x)
    {
        this.x = x;
    }

    void show()
    {
        System.out.println("x = " + x);
    }

    public static void main(String args[])
    {
        C5 ob = new C5(45);
        ob.show();
    }
}
x = 45

Without this — same class, one keyword removed:

class C6
{
    int p;

    C6(int p)
    {
        p = p;
    }

    void show()
    {
        System.out.println("p = " + p);
    }

    public static void main(String args[])
    {
        C6 ob = new C6(45);
        ob.show();
    }
}
p = 0

Doosre program mein p = p; ne parameter ko wahi parameter de diya — data member ko kisi ne chhua hi nahi, isliye woh 0 hi raha. Compiler ne koi error nahi diya, sirf jawaab galat aa gaya. this.p = p; likhte hi sab theek ho jaata.

Key Rule

this hamesha us object ko point karta hai jis par abhi kaam ho raha hai. this.x matlab “is object ka x”, aur khaali x matlab “sabse paas wala x” — jo parameter hi hota hai. Agar parameter aur data member ke naam alag hain, toh this ki zaroorat nahi padti.

Constructor vs Method

Constructor Method
Naam class ke naam ke barabar hota hai. Naam kuch bhi ho sakta hai (class ke naam se alag rakhna hi behtar hai).
Koi return type nahi, void bhi nahi. Return type likhna zaroori hai — void ya koi data type.
new ke saath apne aap chalta hai. Aapko khud bulana padta hai, jaise obj.show().
Object ki zindagi mein sirf ek baar chalta hai. Jitni baar chahe bulaya ja sakta hai.
Kaam: object ko initialise karna. Kaam: object se koi behaviour karwana.
Agar aap na likhein toh Java default de deta hai. Java koi method apne aap nahi banata.

Dry-Run Bank — Output Questions

Dry run ka tarika aapne Iterative Constructs (Loops) mein seekha tha — wahi step-by-step tracking yahan constructor calls par lagaiye.

Constructors se aane wale output questions ka pattern lagbhag hamesha ek jaisa hota hai: kai objects banaye jaate hain, aur aapko batana hota hai ki kaunsa constructor kis object par chala. Har ek ko kaagaz par trace kijiye, phir answer kholiye.

Dry Run 1 — counting objects with a static variable

class DC1
{
    static int made = 0;
    int id;

    DC1()
    {
        made = made + 1;
        id = made;
        System.out.println("Object " + id + " created");
    }

    public static void main(String args[])
    {
        DC1 a = new DC1();
        DC1 b = new DC1();
        DC1 c = new DC1();
        System.out.println("Total objects = " + made);
        System.out.println("b.id = " + b.id);
    }
}
Show Answer
Object 1 created
Object 2 created
Object 3 created
Total objects = 3
b.id = 2

Constructor har object par ek baar chala, isliye teen lines chhapi. made static hai — woh class ka hai, isliye teenon objects mein saanjha hai aur 3 tak pahunch gaya. id non-static hai — har object ke paas apna hai, isliye b.id apni hi baari ka number, 2, yaad rakhta hai.

Dry Run 2 — overloaded constructors plus a double trap

class DC2
{
    double price;
    int qty;

    DC2()
    {
        price = 10.0;
        qty = 1;
    }

    DC2(double price, int qty)
    {
        this.price = price;
        this.qty = qty;
    }

    double bill()
    {
        return price * qty;
    }

    public static void main(String args[])
    {
        DC2 a = new DC2();
        DC2 b = new DC2(24.5, 4);
        System.out.println(a.bill());
        System.out.println(b.bill());
        System.out.println(a.bill() + b.bill());
    }
}
Show Answer
10.0
98.0
108.0

Do baatein pakadni thin. Pehli, khaali brackets par pehla constructor chala aur parameters wale par doosra. Doosri, return type double hai, isliye har jagah .0 ke saath chhapa — 10 nahi, 10.0. Teesri line mein dono double the, isliye yeh asli addition hai: 10.0 + 98.0 = 108.0.

Dry Run 3 — default values of every type

class W2
{
    int n;
    String s;
    double d;
    boolean flag;
    char ch;

    void show()
    {
        System.out.println(n);
        System.out.println(s);
        System.out.println(d);
        System.out.println(flag);
        System.out.println("[" + ch + "]");
    }

    public static void main(String args[])
    {
        W2 ob = new W2();
        ob.show();
    }
}
Show Answer
0
null
0.0
false
[ ]

Koi constructor nahi likha gaya, isliye Java ke default constructor ne sab kuch default values se bhar diya. Aakhri line par gaur kijiye — char ki default value null character hai, jise Java mein '\u0000' likha jaata hai. Woh screen par kuch bhi nahi dikhata, isliye brackets ke beech khaali jagah dikhti hai. MCQ mein “default value of char” ka apekshit jawaab '\u0000' hi hai, khaali space nahi.

How This Chapter Is Examined

CISCE ke Class X syllabus ke anusaar Computer Applications (86) mein ek written paper, do ghante ka, 100 marks hota hai, aur uske alaawa Internal Assessment bhi 100 marks ka. Internal Assessment poori tarah practical hai, jismein saal bhar mein kam se kam 20 lab assignments karne hote hain aur unka record teacher-in-charge rakhta hai. CISCE ke question paper mein yeh 100 marks do hisson mein bante hain: Section A — 40 marks, jismein saare sawaal karne hote hain (MCQs aur chhote answer, jahan output aur definition wale sawaal aate hain), aur Section B — 60 marks, jismein chhe sawaalon mein se koi chaar karne hote hain (yehi poore programs likhne wale sawaal hain). Section A khud do sawaalon ka banta hai: Question 1 20 marks ke MCQs, aur Question 2 20 marks ke chhote sawaal — das hisse, har ek 2 marks ka.

Constructors se sawaal do tarah se aate hain. Chhote sawaalon mein definition aur difference — constructor kya hai, uske do niyam likhiye, constructor aur method mein antar, default aur parameterised constructor mein antar. Aur bade programming sawaalon mein aksar question hi aise likha hota hai: “Define a class Employee with a parameterised constructor to initialise the data members…” — yaani constructor likhna optional nahi, sawaal ka hissa hota hai.

Exam Tip

Programming answers mein constructor likhte waqt do cheezein turant check kijiye — naam class ke naam se hoo-ba-hoo milta hai, aur uske aage koi return type nahi hai. Ye do line ka check aksar do-teen marks bacha leta hai.

Practice Worksheet (10 Questions)

Pehle khud kijiye, phir answer kholiye. Jo galat ho use dobara kaagaz par likhiye — padh lene se yaad nahi hota, likhne se hota hai.

Q1. Define a constructor and state any two of its characteristics.

Show Answer

A constructor is a special member of a class, having the same name as the class, that is invoked automatically when an object is created with new, and whose purpose is to initialise the object’s data members. Any two characteristics: (i) its name is exactly the same as the class name; (ii) it has no return type, not even void; (iii) it is called automatically and cannot be invoked like an ordinary method; (iv) it runs only once in the lifetime of an object.

Q2. Distinguish between a default constructor and a parameterised constructor.

Show Answer

A default constructor is supplied by Java itself when the programmer writes no constructor at all; it takes no arguments and simply gives every data member the default value of its data type (0, 0.0, false, null, and so on). A parameterised constructor is written by the programmer and accepts arguments, so the values are supplied at the moment the object is created and each object can start with different values. Ek aur zaroori fark: apna koi bhi constructor likhte hi Java wala default constructor mil’na band ho jaata hai.

Q3. Give the output.

class W1
{
    int a, b;

    W1()
    {
        a = 5;
        b = 5;
    }

    W1(int a)
    {
        this.a = a;
        b = a * 2;
    }

    void show()
    {
        System.out.println(a + " , " + b);
    }

    public static void main(String args[])
    {
        W1 p = new W1();
        W1 q = new W1(7);
        p.show();
        q.show();
    }
}
Show Answer
5 , 5
7 , 14

p ne khaali wala constructor chalaya, isliye dono 5. q ne ek-parameter wala chalaya: this.a ko 7 mila, aur b ko a * 2 — yahan a parameter hai, isliye 14.

Q4. Give the output, and explain in one line why it is what it is.

class C6
{
    int p;

    C6(int p)
    {
        p = p;
    }

    void show()
    {
        System.out.println("p = " + p);
    }

    public static void main(String args[])
    {
        C6 ob = new C6(45);
        ob.show();
    }
}
Show Answer
p = 0

Parameter p ne data member p ko chhupa diya, isliye p = p; ne parameter ko apni hi value de di aur data member 0 hi raha. Sahi line hoti this.p = p;.

Q5. Give the output.

class W3
{
    int cost;

    W3()
    {
        cost = 100;
    }

    W3(int c)
    {
        cost = c;
    }

    int total(int qty)
    {
        return cost * qty;
    }

    public static void main(String args[])
    {
        W3 a = new W3();
        W3 b = new W3(250);
        System.out.println(a.total(3));
        System.out.println(b.total(2));
        System.out.println(a.total(1) + b.total(1));
    }
}
Show Answer
300
500
350

a ka cost 100 hai, b ka 250. Teesri line mein 100 + 250 — dono int hain, isliye yeh addition hai, concatenation nahi.

Q6. A student writes void Book() as the first block inside class Book. Is it a constructor? What will happen when an object is created?

Show Answer

No. Because a return type has been written, void Book() is an ordinary method that happens to share the class’s name — a constructor may have no return type at all. The program will still compile. When new Book() runs, Java’s own default constructor is used (since the class contains no real constructor), so every data member keeps its default value and the code inside void Book() never runs unless it is called explicitly.

Q7. A class has only the constructor C3(int r, String n). A student writes C3 x = new C3();. What happens, and why?

Show Answer

It fails to compile. Java supplies its default constructor only when the class contains no constructor of its own; here the programmer has written one, so no no-argument constructor exists and new C3() matches nothing. The compiler reports that the constructor cannot be applied to the given types. Fix: also write a no-argument constructor C3() { } yourself, or pass the two required arguments.

Q8. Write a class Rectangle with data members length and breadth and three overloaded constructors: one taking no argument (both sides 1), one taking a single side (a square), and one taking length and breadth. Include a method area() and show all three being used.

Show Answer
class Rectangle
{
    int length, breadth;

    Rectangle()
    {
        length = 1;
        breadth = 1;
    }

    Rectangle(int side)
    {
        length = side;
        breadth = side;
    }

    Rectangle(int l, int b)
    {
        length = l;
        breadth = b;
    }

    void area()
    {
        System.out.println(length + " x " + breadth + " = " + (length * breadth));
    }

    public static void main(String args[])
    {
        Rectangle p = new Rectangle();
        Rectangle q = new Rectangle(6);
        Rectangle r = new Rectangle(8, 3);
        p.area();
        q.area();
        r.area();
    }
}

Output:
1 x 1 = 1
6 x 6 = 36
8 x 3 = 24

Teenon constructors ki parameter list alag hai — khaali, ek int, do int — isliye yeh valid constructor overloading hai.

Q9. What is the purpose of the this keyword in a constructor? When is it not needed?

Show Answer

this refers to the current object — the one being initialised. It is used when a parameter has the same name as a data member: the parameter hides the data member, so this.price means the object’s own price while plain price means the parameter. It is not needed when the parameter and the data member have different names, for example C3(int r, String n) assigning to rollNo and name — there is nothing being hidden, so plain assignment works.

Q10. State any four differences between a constructor and a method.

Show Answer

(i) A constructor’s name must be the same as the class name; a method’s name can be anything. (ii) A constructor has no return type, not even void; a method must have one. (iii) A constructor is invoked automatically when an object is created with new; a method must be called explicitly, as in obj.show(). (iv) A constructor runs only once per object; a method may be called any number of times. (Also acceptable: a constructor initialises the object, whereas a method defines its behaviour; and Java supplies a default constructor if none is written, but never supplies a method.)

↑ Back to top

Aage kya? Ab aapka object theek se banna aur bharna dono seekh chuka hai. Agla padav hai library classes — wrapper classes, autoboxing aur unboxing, jahan Java ki apni banayi hui classes kaam aati hain. Peeche jaana ho toh User-Defined Methods dobara padh lijiye, kyunki constructor aur method ka fark wahin se saaf hota hai.

Kaizen: Aaj se roz apni banayi hui ek class uthaiye aur usmein do constructors jodiye — ek khaali brackets wala aur ek parameters wala. Phir dono se ek-ek object banaiye aur values print kar ke dekhiye. Ek hafte mein aapko har class ka pehla sawaal apne aap sujhne lagega: “iska object banne par andar kya hoga?” Yehi soch programming question mein sabse pehle marks dilati hai.

Written & reviewed by Team Principal Saab — Meet the team →