0 votes
in JAVA by
instance of java

1 Answer

0 votes
by
Java instanceof and its applications

instanceof is a keyword that is used for checking if a reference variable is containing a given type of object reference or not.

Following is a Java program to show different behaviors of instanceof.

filter_none

edit

play_arrow

brightness_4

// Java program to demonstrate working of instanceof

  

// Creating sample classes with parent Child

// relationship

class Parent {  }

class Child extends Parent { }

  

class Test

{

    public static void main(String[] args)

    {

        Child cobj = new Child();

  

        // A simple case

        if (cobj instanceof Child)

           System.out.println("cobj is instance of Child");

        else

           System.out.println("cobj is NOT instance of Child");

  

        // instanceof returns true for Parent class also  

        if (cobj instanceof Parent)

           System.out.println("cobj is instance of Parent");

        else

           System.out.println("cobj is NOT instance of Parent");

  

        // instanceof returns true for all ancestors (Note : Object

        // is ancestor of all classes in Java)  

        if (cobj instanceof Object)

           System.out.println("cobj is instance of Object");

        else

           System.out.println("cobj is NOT instance of Object");            

    }

}

Output :

cobj is instance of Child

cobj is instance of Parent

cobj is instance of Object

instanceof returns false for null

filter_none

edit

play_arrow

brightness_4

// Java program to demonstrate that instanceof

// returns false for null

  

class Test {  }

  

class Main

{

    public static void main(String[] args)

    {

        Test tobj = null;

  

        // A simple case

        if (tobj instanceof Test)

           System.out.println("tobj is instance of Test");

        else

           System.out.println("tobj is NOT instance of Test");

    }

}

Output :

tobj is NOT instance of Test

A parent object is not an instance of Child

filter_none

edit

play_arrow

brightness_4

// A Java program to show that a parent object is

// not an instance of Child

  

class Parent {  }

class Child extends Parent { }

  

class Test

{

    public static void main(String[] args)

    {

        Parent pobj = new Parent();

        if (pobj instanceof Child)

           System.out.println("pobj is instance of Child");

        else

           System.out.println("pobj is NOT instance of Child");

    }

}

Output :

pobj is NOT instance of Child

A parent reference referring to a Child is an instance of Child

filter_none

edit

play_arrow

brightness_4

// A Java program to show that a parent reference

// referring to a Child is an instance of Child

  

class Parent {  }

class Child extends Parent { }

  

class Test

{

    public static void main(String[] args)

    {

        // Reference is Parent type but object is

        // of child type.

        Parent cobj = new Child();

        if (cobj instanceof Child)

           System.out.println("cobj is instance of Child");

        else

           System.out.println("cobj is NOT instance of Child");

    }

}

Output :

cobj is an instance of Child

Application:

We have seen here that a parent class data member is accessed when a reference of parent type refers to a child object. We can access child data member using type casting.

Syntax: (child_class_name) Parent_Reference_variable).func.name().

When we do typecast, it is always a good idea to check if the typecasting is valid or not. instanceof helps us here. We can always first check for validity using instancef, then do typecasting.

filter_none

edit

play_arrow

brightness_4

// A Java program to demonstrate that non-method

// members are accessed according to reference

// type (Unlike methods which are accessed according

// to the referred object)

  

class Parent

{

    int value = 1000;

}

  

class Child extends Parent

{

    int value = 10;

}

  

// Driver class

class Test

{

    public static void main(String[] args)

    {

        Parent cobj = new Child();

        Parent par = cobj;

  

        // Using instanceof to make sure that par

        // is a valid reference before typecasting

        if (par instanceof Child)

        {

            System.out.println("Value accessed through " +

                "parent reference with typecasting is " +

                                     ((Child)par).value);

        }

    }

}

Output:

Value accessed through parent reference with typecasting is 10

Related questions

0 votes
asked Sep 3, 2019 in JAVA by Robin
0 votes
asked Sep 3, 2019 in JAVA by Robin
...