এটি কি সত্য যে ওভাররাইডিং কংক্রিটের পদ্ধতিগুলি একটি কোড গন্ধ? কারণ আমি মনে করি আপনার যদি কংক্রিটের পদ্ধতিগুলি ওভাররাইড করার প্রয়োজন হয়:
public class A{
public void a(){
}
}
public class B extends A{
@Override
public void a(){
}
}
এটি আবার লিখতে পারে
public interface A{
public void a();
}
public class ConcreteA implements A{
public void a();
}
public class B implements A{
public void a(){
}
}
এবং খ যদি ক এ () এ পুনরায় ব্যবহার করতে চায় তবে এটি আবার লিখতে পারে:
public class B implements A{
public ConcreteA concreteA;
public void a(){
concreteA.a();
}
}
পদ্ধতিটি ওভাররাইড করার জন্য যার উত্তরাধিকারের প্রয়োজন হয় না, এটি কি সত্য?
virtual
ওভাররাইডগুলি সমর্থন করার জন্য কীওয়ার্ডটি ব্যবহার করতে হবে । সুতরাং, ভাষাটির বর্ণনাগুলি দ্বারা বিষয়টি আরও (বা কম) অস্পষ্ট করে তুলেছে।
final
এইগুলির মতো পরিস্থিতির জন্য এই সংশোধকটি ঠিক উপস্থিত রয়েছে। যদি পদ্ধতির আচরণ এমন হয় যে এটি ওভাররাইড করার জন্য ডিজাইন করা হয়নি, তবে এটি হিসাবে চিহ্নিত করুন final
। অন্যথায়, আশা করুন যে বিকাশকারীরা এটিকে ওভাররাইড করতে পছন্দ করতে পারে।