কেন কেউ জাভা ইন্টারফেস পদ্ধতিটিকে বিমূর্ত হিসাবে ঘোষণা করবে?


143

আমি বিদ্যমান ক্লাসের উপর ভিত্তি করে একটি ইন্টারফেস তৈরি করতে আজই গ্রহণের "টান ইন্টারফেস" রিফ্যাক্টরিং বৈশিষ্ট্যটি ব্যবহার করেছি। ডায়ালগ বাক্সে নতুন ইন্টারফেসের সমস্ত নতুন পদ্ধতি "বিমূর্ত" পদ্ধতি হিসাবে তৈরি করার প্রস্তাব দেওয়া হয়েছিল।

তাতে কী লাভ হবে?

আমি ভেবেছিলাম যে আপনাকে ইন্টারফেসের পদ্ধতিগুলি বিমূর্ত হিসাবে ঘোষণার অনুমতি দেওয়া হয়েছিল তা হ'ল ভাষার একটি অতিরিক্ত এবং ক্ষতিহীন বৈশিষ্ট্য যা বিশেষভাবে উত্সাহিত হয় না।

কেন গ্রহনটি এমন স্টাইলকে সমর্থন করবে বা কেন কেউ স্বেচ্ছায় তা করতে বেছে নেবে?

স্পষ্টকরণ: আমি কেন জিজ্ঞাসা করছি না কেন ইন্টারফেসের পদ্ধতিগুলি বিমূর্ত, এটি সুস্পষ্ট। আমি জিজ্ঞাসা করছি যে কেন কেউ স্পষ্টতই তাদের বিমূর্ত হিসাবে চিহ্নিত করতে পছন্দ করবে কারণ তারা যদি কোনও ইন্টারফেসে থাকে তবে তারা যেভাবেই বিমূর্ত হয়।

উত্তর:


146

মতে জাভা ল্যাঙ্গুয়েজ স্পেসিফিকেশন , abstractইন্টারফেসের জন্য শব্দ অপ্রচলিত এবং আর ব্যবহার করা উচিত। (বিভাগ 9.1.1.1)

এটি বলেছিল, পিছনের সামঞ্জস্যের জন্য জাভা প্রবণতা সহ, আমি সত্যিই সন্দেহ করি যে abstractকীওয়ার্ড উপস্থিত রয়েছে কিনা তা কোনও ক্ষেত্রেই কোনও পরিবর্তন আনবে ।


1
এটি ছিল আমার বোঝাপড়া (যদিও আমি নির্দিষ্ট জেএলএস বিভাগের সাথে পরিচিত ছিলাম না)। আমি ভাবছি কেন গ্রহ আমাকে কেন অপ্রচলিত চিহ্ন তৈরি করার বিকল্পটি সরবরাহ করবে ...
উরি

আমাকে পেয়েছে। সিদ্ধান্ত নিয়েছে কেউ কোথাও আবশ্যক এটি একটি কাঙ্ক্ষিত "বৈশিষ্ট্য" ছিল এবং এটা করা আপনি কি জানেন, ঐ কূটবুদ্ধি ওপেন সোর্স ধরনের :) অন্যতম।
jdmichal

18
যদিও এটি শীর্ষ-রেটেড উত্তর, এটি নির্দিষ্টকরণের ভুল বিভাগটি উল্লেখ করছে; 9.1.1.1 abstractইন্টারফেসের ঘোষণায় মূল শব্দটির বর্ণনা দিচ্ছে এর সদস্যদের দ্বারা নয়। @ নীচের উইলের উত্তরটি সঠিক এবং বৈধ লিঙ্ক উত্সও রয়েছে।
শেগি ব্যাঙ

39

গ্রহের ক্ষেত্রে "এর উপকার" (ইন্টারফেস পদ্ধতির ঘোষণায় বিমূর্ততা যোগ করা) jdk1.3-তে জেডিটি গ্রহন সংকলক সহ একটি পুরানো সামঞ্জস্য সমস্যা হবে

১.৪ থেকে, জেডিকি লাইব্রেরিতে আর ডিফল্ট বিমূর্ত পদ্ধতি থাকে না (ইন্টারফেস প্রয়োগকারী বিমূর্ত শ্রেণিতে)।
এটি গ্রহণটি 1.3 সংকলক নির্ণয়কে বোকা বানাচ্ছে যেহেতু তাদের বাস্তবায়ন তাদের অস্তিত্বের উপর নির্ভর করছে।
নোট করুন যে জাভ্যাক 1.3 1.4 লাইব্রেরির বিপরীতে (-বুটস্ক্লাসপথ বিকল্পটি ব্যবহার করে) পুরোপুরি অস্বীকার করবে।

যেহেতু Eclipse সংকলকটি 1.4 কমপ্লায়েন্স লেভেলে (দেখুন Workbench>Preferences>Java>Compiler>JDK Compliance) হতে পারে , বা কমপক্ষে 1.3 ক্লাসের লাইব্রেরি ব্যবহার করে যদি 1.3 কমপ্লায়েন্স মোড ব্যবহার করা হয় তবে বর্তমান বেশিরভাগ গ্রহণ প্রকল্পে "বিমূর্ত" উপস্থিতি প্রয়োজন হয় না।


3
ভাল সন্ধান। সুতরাং গ্রহগ্রাহী সংকলকটিতে আর বিদ্যমান অস্তিত্বের সমস্যা নিয়ে কাজ করা কার্যকারিতা।
jdmichal

1
@ জেডিমিকাল: হুবহু, এবং এটি উরির প্রশ্নের আরও সঠিক উত্তর।
ভোনসি

39

থেকে জাভা SE 7 JLS (জাভা ভাষা নির্দিষ্টকরণ): "এটা অনুমতি দেওয়া হয়, কিন্তু শৈলী একটি বিষয় হিসাবে নিরুৎসাহিত, redundantly প্রকাশ্য এবং / অথবা একটি পদ্ধতি জন্য বিমূর্ত পরিবর্তক নির্দিষ্ট করার একটি ইন্টারফেস ঘোষণা।"

জন্য জাভা SE 5.0 : "জাভা প্ল্যাটফর্ম পুরোনো সংস্করণের সাথে সামঞ্জস্যের জন্য, এটি করার অনুমতি কিন্তু শৈলী একটি বিষয় হিসাবে, নিরুৎসাহিত করা হয়, redundantly নির্দিষ্ট করার পদ্ধতি জন্য বিমূর্ত পরিবর্তক ইন্টারফেসগুলি ঘোষণা।"


9

ইন্টারফেসগুলিতে জেএলএস পদ্ধতি অনুসারে ডিফল্টরূপে বিমূর্ত হয়, তাই কীওয়ার্ডটি অপ্রয়োজনীয়। এটি জানার পরে, আমি কখনই এটি "উপস্থাপকীয় গোলমাল এড়াতে" ব্যবহার করব না।


এটি সঠিক উত্তর হওয়া উচিত। এখানে একটি আপডেট হওয়া লিঙ্কটি রয়েছে - "নোট" বিভাগটি দেখুন
মুরক 12

জেএলএস বলে না যে ইন্টারফেসের পদ্ধতিগুলির জন্য কীওয়ার্ডটি অপ্রচলিত। এতে বলা হয়েছে, "ইন্টারফেসে ঘোষিত পদ্ধতির জন্য জনসাধারণ এবং / বা বিমূর্ত সংশোধককে অতিরিক্তভাবে নির্দিষ্ট করার জন্য এটি অনুমোদিত তবে শৈলীর বিষয় হিসাবে নিরুৎসাহিত" " জেএলএস # 9.4
লার্নের মার্কুইস

@ এজেপি আমি বলিনি যে জেএলএস কীওয়ার্ডটি অপ্রচলিত হবে বলে উল্লেখ করেছে, এটি আমার ব্যক্তিগত মতামত;) বিটিডাব্লু তারা এই কীওয়ার্ডটিকে "রিডানডান্ট" বলে মনে করে যা অপ্রচলিত হিসাবে একেবারেই সমান নয়, এতে আপনি অবশ্যই ঠিক বলেছেন । এখন যেহেতু আমি জানি আমি এটি স্পষ্ট করার জন্য উত্তরটি সম্পাদনা করব।
ড্যানিয়েল হিলার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.