আমরা অভ্যস্ত
class ClassTypeA implements InterfaceTypeA {}
class ClassTypeB extends ClassTypeA {}
এবং এই বিধিগুলি থেকে কোনও সামান্য বিচ্যুতি আমাদের বিভ্রান্ত করে।
একটি টাইপ বাউন্ডের বাক্য গঠনটি সংজ্ঞায়িত করা হয়
TypeBound:
extends TypeVariable
extends ClassOrInterfaceType {AdditionalBound}
( জেএলএস 12> ৪.৪। ভেরিয়েবলগুলি টাইপ করুনTypeBound
))
আমরা এটি পরিবর্তন করতে হলে, আমরা নিশ্চয় যোগ হবে implements
কেস
TypeBound:
extends TypeVariable
extends ClassType {AdditionalBound}
implements InterfaceType {AdditionalBound}
এবং দুটি অভিন্ন প্রক্রিয়াযুক্ত ধারা সহ শেষ
ClassOrInterfaceType:
ClassType
InterfaceType
( জেএলএস 12> 4.3। রেফারেন্সের ধরণ এবং মানগুলি>ClassOrInterfaceType
)
বাদে আমাদেরও যত্ন নেওয়া দরকার implements
, যা বিষয়গুলিকে আরও জটিল করে তুলবে।
আমি বিশ্বাস করি যে জটিল ধারণার মধ্যে জিনিসগুলি সহজ রাখার extends ClassOrInterfaceType
পরিবর্তে extends ClassType
এবং এর পরিবর্তে কেন ব্যবহৃত হয় এটিই মূল কারণ implements InterfaceType
। সমস্যা আমরা সঠিক শব্দ উভয় আবরণ হবে না হয় extends
এবং implements
এবং আমরা স্পষ্টভাবে এক পরিচয় করিয়ে দিতে চাই না।
<T is ClassTypeA>
<T is InterfaceTypeA>
যদিও extends
এটি কোনও ইন্টারফেসের সাথে সাথে আসে তখন কিছুটা গোলযোগ এনে দেয়, এটি একটি বিস্তৃত শব্দ এবং এটি উভয় ক্ষেত্রেই বর্ণনা করতে ব্যবহার করা যেতে পারে। আপনার মনকে কোনও প্রকার বাড়ানোর ধারণার সাথে সুর দেওয়ার চেষ্টা করুন ( কোনও শ্রেণি প্রসারিত করা হবে না, কোনও ইন্টারফেস প্রয়োগ করা হচ্ছে না )। আপনি কোনও প্রকারের প্যারামিটারকে অন্য ধরণের দ্বারা সীমাবদ্ধ করেন এবং সেই ধরণের আসলে কী তা বিবেচ্য নয়। এটি কেবল গুরুত্বপূর্ণ যে এটি এর উপরের আবদ্ধ এবং এটি এর সুপারটাইপ ।
implements
?" - "কারণ কেবল আছেextends
"।