জাভা কেন সি ++ এর মতো ব্যক্তিগত / সুরক্ষিত উত্তরাধিকারকে সমর্থন করে না? [বন্ধ]


12

সি ++ তে কোনও শ্রেণি উত্তরাধিকার সূত্রে, ব্যবহারকারী অ্যাক্সেস সুনির্দিষ্ট যেমন,

class Base
{
    public int mem1;
    protected in mem2;
};

class Derived1 : **private** Base
{
    // mem1 will be private here.
    // mem2 will be private here.
};

class Derived2 : **protected** Base
{
    // mem1 will be protected here.
    // mem2 will be protected here.
};

class Derived2 : **public** Base
{
    // mem1 will be public here.
    // mem2 will be protected here.
};

তবে জাভাতেও এটি সম্ভব নয়, অর্থাৎ জাভাতে প্রসারিত হওয়া সর্বদা সি ++ তে "সর্বজনীন" উত্তরাধিকারের মতো।

কেউ কি এর কারণ ব্যাখ্যা করতে পারেন?


16
বৈশিষ্ট্য বাদ দেওয়ার জন্য কারও কারও প্রয়োজন নেই, যুক্ত করার জন্য কারও কারণ প্রয়োজন (আদর্শভাবে বেশ কয়েকটি ভাল) ones

1
এটি কেবল অনুমানমূলকভাবে উত্তর দেওয়া যেতে পারে, ভোট বন্ধ করার জন্য।
জিমি হোফা

উত্তর:


10

ব্যক্তিগত / সুরক্ষিত উত্তরাধিকার আপনাকে প্রদত্ত বেশিরভাগ সুবিধা সহজেই এনক্যাপসুলেশনের মাধ্যমে অর্জন করা যায়। টমাস এডিং ব্যক্তিগত / সুরক্ষিত উত্তরাধিকার সংযোজন সহ আরও সহজতর করা যেতে পারে এমন কেসগুলির কয়েকটি ভাল উদাহরণ প্রদান করেছেন, এবং এগুলি বৈধ ক্ষেত্রে চলাকালীন, কাজের ক্ষেত্রগুলি রয়েছে যা ব্যক্তিগত / সুরক্ষিত উত্তরাধিকারের প্রয়োজন হয় না এবং আরও 'বুদ্ধিমান' হয় (জাভাতে অন্তত)।

জাভা ভাষার বিকাশকারীরা স্পষ্টতই অনুভব করেছিলেন যে ব্যক্তিগত / সুরক্ষিত উত্তরাধিকার (একাধিক উত্তরাধিকার সহ) সমর্থন করার জন্য জটিলতার যে ব্যয় প্রয়োজন তা তার যে সুবিধাটি দেবে তা ছাড়িয়ে গেছে।


1
এটি লক্ষণীয় যে, সি ++ তে বেসরকারী উত্তরাধিকার এবং সদস্য হিসাবে অন্তর্ভুক্তির মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে, তবে তারা সূচনা এবং একাধিক উত্তরাধিকারের ক্রম ঘুরছে এবং এইভাবে জাভার সরল অবজেক্ট সিস্টেমে অনুবাদ করে না।
জানু হুডেক

2
-1: " ব্যক্তিগত / সুরক্ষিত উত্তরাধিকার আপনাকে যে কোনও সুবিধা দেয় তা সহজেই এনক্যাপসুলেশনের মাধ্যমে অর্জন করা যায় ।" ভুল। আমি " সর্বাধিক সুবিধাগুলি ..."
টমাস এডিং

@ থমাসেডিং আপনি কী এমন কোনও উদাহরণ দিতে পারেন যা ব্যক্তিগত / সুরক্ষিত উত্তরাধিকারের মাধ্যমে অর্জন করা যায় তবে এনক্যাপসুলেশন দ্বারা নয় (বা কমপক্ষে এমন কোনও কিছু যা এনক্যাপসুলেশন সম্পন্ন করার জন্য ভাল কাজ করতে পারে)? আমি সৎভাবে একটি সম্পর্কে ভাবতে পারি না, তবে আমি দৃ being় বিশ্বাসের জন্য উন্মুক্ত।
PSWg

2
ওফস, দুঃখিত! সি ++ এর কয়েকটি উদাহরণ এখানে। (1) ধরুন আপনি শ্রেণিটিকে অভ্যন্তরীণভাবে Bএকটি A( Bব্যক্তিগতভাবে উত্তরাধিকার সূত্রে প্রাপ্ত A) হিসাবে বিবেচনা করতে চান যাতে আপনি এটি কোনও পদ্ধতিতে বহুরূপে ব্যবহার করতে পারেন। রচনা দিয়ে, এটি করা যেতে পারে, তবে এটি আরও মেসেঞ্জার। এখানে আপনাকে একটি পৃথক সাবক্লাস তৈরি করতে হবে A'(সম্ভবত কোনও অভ্যন্তরীণ শ্রেণি) যা আপনার ব্যবহৃত কার্যকারিতা কার্যকর করে। আপনি নিজে নিজেও পিতা বা মাতা পরিবর্তন প্রতিনিধি করতে হবে Bশ্রেণী ( Bতোলে A'বন্ধু A'একটি রেফারেন্স গ্রহণ B)। আমি মনে করি এটি করা খুব কঠিন নয় তবে কোডটিতে এটি একটি জগাখিচুড়ি ঘটায়। (চলমান)
টমাস এডিং

2
... (2) আপনি যদি Bসুরক্ষিত ভেরিয়েবলগুলিতে অ্যাক্সেস করতে চান তবে Aব্যক্তিগত উত্তরাধিকার আবারও আরও কম কম্পোজিশনের মাধ্যমে প্রয়োগ করা সহজ। রচনা দিয়ে আপনি A'উপরের মতো একইভাবে প্রয়োগ করতে এবং / অথবা সুরক্ষিত ভেরিয়েবলের অ্যাক্সেস বাড়াতে পারেন। (3) ধরুন আপনি কোনও একক ভাগ করা স্থির সদস্যের পরিবর্তনশীল চান যা টেমপ্লেট ইনস্ট্যান্টেশন জুড়ে একই সঠিক পরিবর্তনশীল। একটি সমাধান হ'ল স্থায়ী সদস্য আছে এমন একটি অ-টেম্প্লেটেড বেস শ্রেণীর দ্বারা ব্যক্তিগতভাবে উত্তরাধিকারী হওয়া। রচনা এই সমস্যাটি সমাধান করতে পারে না, যদিও অন্যান্য কৌশলগুলি (যেমন সদস্যের সাথে অন্য কোনও শ্রেণির বন্ধু-বান্ধব)।
টমাস এডিং

9

যেহেতু জাভার একাধিক উত্তরাধিকার নেই এবং সমস্ত কিছু থেকে (প্রকাশ্যে) উত্তরাধিকার সূত্রে প্রাপ্ত হতে হবে Object, জাভাতে এমন কোনও জায়গা নেই যেখানে ব্যক্তিগত বা সুরক্ষিত উত্তরাধিকার বৈধ প্রোগ্রাম অর্জন করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.