Skip to main content

Casting the Objects

class A
  {
      // body of class A
  }

class B extends A
   {
      // body of class B
   }


We can cast the subclass object to a super class reference variable. i.e. Super class reference variable can hold the subclass object...

A a = new B();

But Subclass reference variable can not hold the super class object. WHY?

B b = new A();                     // Compile time error

Comments

  1. because Class B is having the data member and methods of class A along with its own data member and methods. class A cannot initialize variables of class B(B b = new A(); ).

    ReplyDelete
    Replies
    1. B b = new A();
      Here, we are calling the constructor of class A. So obviously it will initialize all the instance variables of class A. But the question is why we can't assign the object reference of class A to the reference variable of class B?

      Delete
  2. When a subclass extends a superclass, it can also have additional attributes and methods not existing in the superclass.As the variable type determines what methods you can use "on" it, a variable of a subclass type can hence expose more operations available than the superclass has implemented. That's why a variable of a subclass type can't reference an instance of a
    superclass.

    ReplyDelete
    Replies
    1. Ya, You are right.
      We use the reference variable of a class when we want to access the members of any class. So if we assign the reference of object of class A to reference variable of class A, it will be assumed that it will be having access to all the members of class B. But we are invoking the constructor of class A only, which will not have the members of class B.

      Therefore, the subclass reference variable can't hold the super-class object reference.

      Delete
  3. Good Post! Thank you so much for sharing the nice post, it was so good to read and useful to improve
    Java Training in Electronic City

    ReplyDelete

Post a Comment

Popular posts from this blog

Practice MCQs

  1. What will be the Output of the following code? class X{                  static int x = 1;                        static class Y {                              static int y = x++;                                static class Z                                                                       {                                                                                         static int z = ++y;                                                                        }                                               }                }   class MainClass{     public static void main(String[] rk)    {                             System.out.print(X.x);                                             System.out.print(X.Y.y);                             System.out.print(X.Y.Z.z);         } } A. 113 B. 123 C. 111 D. None of These Ans: A 2.  Which of the following statement is TRUE about t he following code? public class Outer  {    private i

Practice Set

1. Write a program to create a class Voter which contains attributes name, date_of_birth and voter_id and voter has a Voter_Card. Provide appropriate constructor to initialize all the attributes of the Voter but voter id must be assigned automatically only when the age of the voter is greater than or equal to 18 years. VoterCard is a nested class with attributes voter_id and Voter_name. Make sure that voter card is created only when user is a valid voter and if it is already created then must not be assigned the new voter id. 2. Write a program to define two interfaces UGC and AICTE both having a default method int getAdmission() to take the admission and an abstract method String payFee(). getAdmission() in UGC must ask the percentage in qualifying exam and if the percentage >= 60 then generate the registration number and return. getAdmission() is AICTE must ask the user to join the counseling after 5 days and display the date of counseling and return the counseling token numb

Mock Test - 1

1. Which of the following is a byte stream class? A. ObjectInputStream B. Writer C. PrintWriter D. Scanner Ans: A 2. Which exception is thrown by read() method in InputStream class? A. IOException B. InterruptedException C. FileNotFoundException D. None of These Ans: A 3. Which of the following class is subclass of FilterInputStream? A. InputStream B. ObjectOutputStream C. FileInputStream D. BufferedInputStream  Ans: D 4. Which of these class contains the print() and println() methods? A. System B. out C. PrintStream D. BUfferedOutputStream Ans: C 5. Which of these is a method to clear all the data present in output buffer without terminating the stream? A. clear() B. fflush() C. flush() D. close() Ans: C 6. Which of these classes defined in java.io and used for file-handling are abstract? (i) InputStream        (ii) PrintStream    (iii) Reader        (iv) FileInputStream A. Only i     B. i and ii    C. Only iii    D. i and iii Ans: D 7. What is the output of this program? class MyE