This Blog is Under Construction

Friday, March 3, 2017

InstanceOf Operator

instanceOf Operator দিয়ে চেক করা হয় আসলে এটা কার object.
Sample Code:


class Geometric{
 //do the stuff
}
class Circle extends Geometric{
 //do the stuff
}

public class MainClass{
 public static void main(String[] args){

     System.out.println(new Circle().getArea() instaceOf Geometric);

 }
}

বামের object টি ডানের object এর সমান কিনা তা চেক করার জন্যই instanceOf use করা হয়েছে :D

Type Casting

আমরা জানি জাভা strong type. কারণ জাভা এর type গুলো strong. এক টাইপর variable এর জন্য অন্য type এর variable এর value রাখতে চাই তাহলে আমাদের কে অতিরিক্ত force প্রয়োগ করতে হবে। এই ঘটনাকেই casting বলে। Object type আসলে relationship এর সাথে সম্পর্কযুক্ত।


 
class Animal{
 //do the stuff
}
class Cat extends Animal{
 //do the stuff
}
Animal Cat এ cast হতে পারে। Cat Animal এ cast হতে পারে। এ রকম relationship কে is a relationship বলে। বলে রাখি inheritance is a relationship. Casting দুই ধরনের হতে পারে। upCasting and downCasting. 
Code sample:

Animal animal = new Animal();
Cat cat = new Cat();

//upcasting is implicit and safe
animal = cat;

//downCasting

cat = (Cat)Animal();

Covariant Return টাইপ কি





আমরা জানি যদি Supper Class এর মেথড Subclass এ Override করি তবে Subclass এ method signature ও return type একই হওয়া লাগে । না হলে সেটা Override হবে না ।
কিন্তু return type যদি Covariant হয় তবে Subclass এ আমরা return type আলাদা করতে পারবে । তবে সেটা কিছু শর্ত মেনে চলতে হবে । শর্ত হল ঐ subclass এর মেথডের return type অবশ্যই Superclass type হতে হবে ।
অর্থাৎ Supperclass মেথড return type যদি r1 হয় এবং Subclass এ এসে সেই return type যদি r2 হয় [ Signature same হতে হবে ] তবে r2 কে অবশ্যই Supper Type হতে হবে । যদি Supper type না হয় তবে সেটা Invariant হবে এবং কম্পাইল এরর খেতে হবে ।
কোড :
 class A {
 }

 class B extends A {
 }

 class C {
     A getA() {
         return new A();
     }
 }

 class D extends C {
     //Overriding getA()
     B getB() {
         return new B(); // return type is different and B is subtype of A
     }
 }

এখন question হতে পারে এই কাজটা করা সুবিধা কি ?
সুবিধা হল আমারা আমাদের মেথড থেকে more specific ভাবে ভালু রিটার্ন করতে পারছি । এবং কোড পড়ার ক্ষেত্রেও এটা সুবিধাজনক ।
পুনশ্চ : Java 5.0 এর আগে জাভা তে Covariant return type ছিল না । Java 5.0 তেই সর্ব প্রথম Covariant return type সুবিধা অ্যাড করা হয়েছে 


এই পোস্টটি মেহেদি হাসান মেনন শেয়ার করছেন :D