জাভাতে লুকিয়ে থাকা থেকে ওভাররাইড করা কীভাবে আলাদা তার বিষয়ে আমি বিভ্রান্ত। এগুলি কীভাবে আলাদা হয় সে সম্পর্কে আরও বিশদ কী কেউ দিতে পারেন? আমি জাভা টিউটোরিয়াল পড়েছি কিন্তু নমুনা কোডটি এখনও আমাকে বিভ্রান্ত করেছে।
আরও স্পষ্ট করে বলতে গেলে, আমি ওভাররাইডিং ভালভাবে বুঝতে পারি। আমার ইস্যুটি হ'ল আমি দেখি না যে লুকানো কীভাবে অন্যরকম, অন্যটি ক্লাস স্তরে থাকা অবস্থায় একটি উদাহরণের স্তরে রয়েছে।
জাভা টিউটোরিয়াল কোডটি দেখছেন:
public class Animal {
public static void testClassMethod() {
System.out.println("Class" + " method in Animal.");
}
public void testInstanceMethod() {
System.out.println("Instance " + " method in Animal.");
}
}
তারপরে আমাদের একটি সাবক্লাস রয়েছে Cat
:
public class Cat extends Animal {
public static void testClassMethod() {
System.out.println("The class method" + " in Cat.");
}
public void testInstanceMethod() {
System.out.println("The instance method" + " in Cat.");
}
public static void main(String[] args) {
Cat myCat = new Cat();
Animal myAnimal = myCat;
Animal.testClassMethod();
myAnimal.testInstanceMethod();
}
}
তখন তারা বলে:
এই প্রোগ্রামটি থেকে আউটপুট নিম্নরূপ:
পশুর মধ্যে ক্লাস পদ্ধতি।
বিড়ালের উদাহরণ পদ্ধতি।
আমার কাছে যে, আসলে একটি বর্গ পদ্ধতি কলিং testClassMethod()
থেকে সরাসরি Animal
বর্গ executes পদ্ধতি Animal
বর্গ বেশ স্পষ্ট, কিছুই বিশেষ নেই। তারপরে তারা এটিকে testInstanceMethod()
একটি রেফারেন্স থেকে কল করে myCat
, তাই আবারও স্পষ্টতই স্পষ্ট হয় যে পরে কার্যকর করা পদ্ধতিটি উদাহরণটির মধ্যে একটি Cat
।
আমি যা দেখছি, কল আড়াল করা ঠিক ওভাররাইডের মতো আচরণ করে, তবে কেন এই পার্থক্যটি তৈরি করবেন? যদি আমি উপরের ক্লাসগুলি ব্যবহার করে এই কোডটি চালিত করি:
Cat.testClassMethod();
আমি পাব:
বিড়ালের ক্লাস পদ্ধতি method
তবে আমি যদি testClassMethod()
ক্যাট থেকে এটি সরিয়ে ফেলি , তবে আমি পাব:
পশুর মধ্যে ক্লাস পদ্ধতি।
যা আমাকে দেখায় যে একটি স্থিতিশীল পদ্ধতি, পিতামাতার মতো একই স্বাক্ষর সহ, একটি সাবক্লাসে প্রায় অনেকটা ওভাররাইড করে।
আশা করি আমি আমার কোথায় পরিষ্কার করছি যেখানে আমি বিভ্রান্ত হয়ে পড়েছি এবং কেউ কিছু আলোকপাত করতে পারে। অগ্রিম ধন্যবাদ!