উত্তর:
অবশ্যই.
শ্রেণীর বিমূর্ত ঘোষণা ঘোষণার অর্থ হ'ল আপনি নিজেরাই এটিকে ইনস্ট্যান্ট করার অনুমতি দিচ্ছেন না।
কোনও পদ্ধতি বিমূর্ত ঘোষণার অর্থ সাবক্লাসগুলি সেই পদ্ধতির জন্য একটি প্রয়োগকরণ সরবরাহ করতে হবে।
দুটি পৃথক ধারণা, যদিও স্পষ্টতই আপনি একটি অ-বিমূর্ত শ্রেণিতে একটি বিমূর্ত পদ্ধতি রাখতে পারবেন না। এমনকি আপনি final
পদ্ধতিগুলি সহ বিমূর্ত ক্লাস করতে পারেন তবে অন্যভাবে কখনও নয় never
হ্যাঁ, আপনি এটা করতে পারেন. আপনি কেবল এটি করার চেষ্টা করছেন না কেন?
হ্যা, তুমি পারো. জাভাতে ব্যবহৃত বিমূর্ত শ্রেণিটি বোঝায় যে আপনি শ্রেণীর কোনও বস্তু তৈরি করতে পারবেন না। এবং একটি বিমূর্ত পদ্ধতি সাবক্লাসগুলিকে সেই পদ্ধতির জন্য একটি প্রয়োগকরণ সরবরাহ করতে হবে।
সুতরাং আপনি কোনও বিমূর্ত পদ্ধতি ছাড়াই সহজেই একটি বিমূর্ত শ্রেণীর সংজ্ঞা দিতে পারেন।
উদাহরণ হিসাবে:
public abstract class AbstractClass{
public String nonAbstractMethodOne(String param1,String param2){
String param = param1 + param2;
return param;
}
public static void nonAbstractMethodTwo(String param){
System.out.println("Value of param is "+param);
}
}
্রফ.
হ্যাঁ আপনি যে কোনও বিমূর্ত পদ্ধতি সহ বিমূর্ত শ্রেণি তৈরি করতে পারেন বিমূর্ত পদ্ধতি ব্যতীত অ্যাবস্ট্রাক্ট শ্রেণির সর্বোত্তম উদাহরণ হ'ল এইচটিপি সার্ভলেট
অ্যাবস্ট্রাক্ট পদ্ধতি এমন একটি পদ্ধতি যার কোনও দেহ নেই, আপনি যদি ক্লাসে কমপক্ষে একটি পদ্ধতি ঘোষণা করেন তবে শ্রেণিকে অবশ্যই घोषित করতে হবে বিমূর্তিটি এর বাধ্যতামূলক তবে তবে যদি আপনি বিমূর্ত শ্রেণিকে শ্রেণীর অভ্যন্তরে বিমূর্ত পদ্ধতি ঘোষণা করা বাধ্যতামূলক না ঘোষণা করে থাকেন।
আপনি বিমূর্ত শ্রেণীর বস্তু তৈরি করতে পারবেন না, যার অর্থ এটি তাত্ক্ষণিকভাবে চালু করা যায় না।
হ্যাঁ, আপনি এমন কোনও ক্লাস ঘোষণা করতে পারেন যা ইতিমধ্যে বাস্তবায়ন রয়েছে কেবল এমন পদ্ধতিতে আপনি নিজেই তা ইনস্ট্যান্ট করতে পারবেন না। আপনি যদি ভবিষ্যতে বিমূর্ত পদ্ধতি যুক্ত করতে চান, বা শ্রেণীর কোনও অ্যাবস্ট্রাক্ট বৈশিষ্ট্য না থাকলেও সরাসরি ইনস্ট্যান্ট করা না চাইলে এটি কার্যকর হবে to
হ্যাঁ, আমরা কোনও বিমূর্ত পদ্ধতি ছাড়াই একটি বিমূর্ত শ্রেণির ঘোষণা করতে পারি। কোনও শ্রেণিকে বিমূর্ত হিসাবে ঘোষণা করার উদ্দেশ্যটি ক্লাসটি তাত্পর্যপূর্ণ করা নয়।
সুতরাং দুটি ক্ষেত্রে
1) বিমূর্ত পদ্ধতি সহ বিমূর্ত শ্রেণি।
এই ধরণের ক্লাসগুলি, আমাদের অবশ্যই এই বিমূর্ত শ্রেণি থেকে একটি শ্রেণীর উত্তরাধিকারী হতে হবে এবং অবশ্যই আমাদের ক্লাসে বিমূর্ত পদ্ধতিগুলি ওভাররাইড করতে হবে, যেমন: জেনেরিক সার্লেট ক্লাস
2) বিমূর্ত পদ্ধতি ছাড়া বিমূর্ত শ্রেণি।
এই ধরণের ক্লাসগুলি, আমাদের অবশ্যই এই বিমূর্ত শ্রেণি থেকে একটি শ্রেণীর উত্তরাধিকারী হতে হবে, উদাহরণস্বরূপ: এইচটিটিপি সার্লেট ক্লাস করার উদ্দেশ্য হ'ল আপনি যদি শিশু ক্লাসে আপনার যুক্তি বাস্তবায়ন না করেন তবে আপনি পিতামাতাকে যুক্তি পেতে পারেন
হ্যাঁ আমরা বিমূর্ত পদ্ধতি ব্যতীত একটি বিমূর্ত শ্রেণি রাখতে পারি কারণ উভয়ই স্বতন্ত্র ধারণা। শ্রেণীর বিমূর্ত ঘোষণা ঘোষণার অর্থ হ'ল এটি নিজে থেকে ইনস্ট্যান্ট করা যায় না এবং কেবল উপ-সংঘবদ্ধ হতে পারে। কোনও পদ্ধতি বিমূর্ত ঘোষণার অর্থ হল সাবক্লাসে পদ্ধতিটি সংজ্ঞায়িত করা হবে।
হ্যাঁ, আপনি একটি বিমূর্ত পদ্ধতি ছাড়াই একটি বিমূর্ত শ্রেণীর সংজ্ঞা দিতে পারেন। তবে, ভিতরে কোনও পদ্ধতি না থাকলে আপনার ইন্টারফেসের সাথে আরও ভালভাবে যেতে হবে
হ্যাঁ আপনি এটি করতে পারেন
শ্রেণীর বিমূর্ত ঘোষণার অর্থ ক্লাসটি অন্য কোনও শ্রেণীর দ্বারা তাত্ক্ষণিকভাবে চালিত হবে না।
এবং এর ভিতরে কমপক্ষে একটি বিমূর্ত পদ্ধতি থাকা উচিত এবং এর অর্থ আপনি যদি সেই শ্রেণীর মধ্যে বিমূর্ত পদ্ধতিটি ঘোষণা করতে পারেন তবে আপনি যদি তার ঠিকানার চেয়ে কোনও পদ্ধতি ঘোষণা করেন না।
উদাহরণ:
public abstract class abs {
protected int cx = 0, cy = 0;
public void p() {
System.out.print("hello");
}
}
এটি নিশ্চিতভাবে কাজ করবে।
হ্যা, তুমি পারো. কখনও কখনও আপনি এই প্রশ্নটি জিজ্ঞাসা করতে পারেন যে এটি করার উদ্দেশ্য কী? উত্তরটি হ'ল: কখনও কখনও আমাদের নিজের দ্বারা ক্লাসটি ইনস্ট্যান্ট করা থেকে সীমাবদ্ধ করতে হয়। সেক্ষেত্রে আমরা চাই যে ব্যবহারকারীরা আমাদের বিমূর্ত শ্রেণিটি প্রসারিত করুন এবং শিশু ক্লাসটি ইনস্ট্যান্ট করুন
আপনি পারবেন, আমার মনে প্রশ্নটি আপনার উচিত। ঠিক প্রথম থেকেই, আমি বলব যে এর কোনও কঠোর এবং দ্রুত উত্তর নেই। আপনার বর্তমান পরিস্থিতির জন্য সঠিক কাজ করুন।
আমার কাছে উত্তরাধিকার বলতে 'একটি-ই' সম্পর্ককে বোঝায়। একটি কুকুর শ্রেণীর কল্পনা করুন, যা আরও বিশেষ উপজাতগুলি (আলস্যাটিয়ান, পোডেল ইত্যাদি) দ্বারা বাড়ানো যেতে পারে। এক্ষেত্রে কুকুর শ্রেণিকে বিমূর্ত তৈরি করা সঠিক জিনিস হতে পারে যেহেতু উপ-প্রকারের কুকুর। এখন কল্পনা করুন যে কুকুরের একটি কলার প্রয়োজন। এক্ষেত্রে উত্তরাধিকারের কোনও অর্থ হয় না: কুকুর এবং কলার মধ্যে 'ইজ-এ' সম্পর্ক থাকা বাজে কথা। এটি অবশ্যই একটি 'হ্যাস-এ' সম্পর্ক, কলার একটি সহযোগী অবজেক্ট। কলার বিমূর্তিটি তৈরি করা যাতে কুকুরের একটির পক্ষে তা বোঝা যায় না।
আমি প্রায়শই দেখতে পাই যে কোনও বিমূর্ত পদ্ধতি ছাড়াই বিমূর্ত ক্লাসগুলি সত্যই একটি 'হ্যাস-এ' সম্পর্ক প্রকাশ করছে। এই ক্ষেত্রে আমি সাধারণত দেখতে পাই যে কোড উত্তরাধিকার ব্যবহার না করে আরও ভাল ফ্যাক্টর করা যেতে পারে। আমি আরও দেখতে পাই যে কোনও বিমূর্ত পদ্ধতি ছাড়াই বিমূর্ত ক্লাসগুলি প্রায়শই একটি কোডের গন্ধ এবং খুব কমপক্ষে একটি কোড পর্যালোচনাতে প্রশ্ন উত্থাপন করা উচিত।
আবার এটি পুরোপুরি বিষয়গত। এমন পরিস্থিতিতেগুলি থাকতে পারে যখন বিমূর্ত পদ্ধতি ছাড়াই একটি বিমূর্ত শ্রেণি অর্থবোধ করে, এটি সম্পূর্ণরূপে ব্যাখ্যা এবং ন্যায়সঙ্গত হওয়া পর্যন্ত। আপনি যা কাজ করছেন তার জন্য সেরা সিদ্ধান্ত নিন।
আসলে কোনও বিমূর্ত শ্রেণীর কোনও বিমূর্ত পদ্ধতি না থাকলে এর কোনও অর্থ নেই। একটি বিমূর্ত শ্রেণি বাবার মতো। এই বাবার কিছু বৈশিষ্ট্য এবং আচরণ রয়েছে, যখন আপনি শিশু হিসাবে পিতার সন্তান হতে চান, পিতা বলেন সন্তানের (আপনি) অবশ্যই এটি হওয়া উচিত, এটি আমাদের মোটো এবং আপনি যদি না করতে চান তবে আপনি আমার ছেলে না।
WindowDecorator
এবংCoffeeDecorator
হয়abstract
ক্লাস, কিন্তু কেউই একটি অন্তর্ভুক্তabstract
পদ্ধতি।