জাভাতে, আমি একটি উত্সযুক্ত শ্রেণিতে ওভাররাইড পদ্ধতি থেকে বেস ক্লাসের পদ্ধতিটিকে কীভাবে কল করব?


137

আমার দুটি জাভা ক্লাস রয়েছে: বি, যা অন্য ক্লাস এ-তে প্রসারিত করে:

class A {
    public void myMethod() { /* ... */ }
}

class B extends A {
    public void myMethod() { /* Another code */ }
}

আমি কল করতে চান A.myMethod()থেকে B.myMethod()। আমি সি ++ বিশ্ব থেকে আসছি , এবং জাভাতে এই মৌলিক জিনিসটি কীভাবে করব তা আমি জানি না।

উত্তর:


145

আপনি যে কীওয়ার্ডটি সন্ধান করছেন তা হ'ল super। উদাহরণস্বরূপ, এই গাইড দেখুন ।


4
দেখে মনে হচ্ছে আপনি সি ++ তে একটি নির্দিষ্ট পূর্বপুরুষ পদ্ধতিতে কল করতে পারেন তবে জাভা নয়, আপনি কেবল এটি শৃঙ্খলা পেরিয়ে যেতে পারেন ...
রোজারডপ্যাক

132

কেবল সুপার ব্যবহার করে এটি কল করুন।

public void myMethod()
{
    // B stuff
    super.myMethod();
    // B stuff
}


20

super.MyMethod()ভিতরে বলা উচিত MyMethod()এর class B। সুতরাং এটি নিম্নলিখিত হিসাবে হওয়া উচিত

class A {
    public void myMethod() { /* ... */ }
}

class B extends A {
    public void myMethod() { 
        super.MyMethod();
        /* Another code */ 
    }
}


7

আমি বেশ নিশ্চিত যে আপনি এটি জাভা প্রতিবিম্ব প্রক্রিয়া ব্যবহার করে করতে পারেন। এটি সুপার ব্যবহারের মতো সোজা নয় তবে এটি আপনাকে আরও শক্তি দেয়।

class A
{
    public void myMethod()
    { /* ... */ }
}

class B extends A
{
    public void myMethod()
    {
        super.myMethod(); // calling parent method
    }
}

এটি কোডটিতে কোনও জাভা প্রতিবিম্ব প্রদর্শন করে না এবং অন্যদের মতো একই কোড। উত্তরের আরও কি আছে?
Nelda.techspiress


3
super.baseMethod(params);

সুপার কীওয়ার্ড সহ বেস পদ্ধতিগুলি কল করুন এবং স্বতন্ত্র প্যারামগুলি পাস করুন।


3
class test
{
    void message()
    {
        System.out.println("super class");
    }
}

class demo extends test
{
    int z;
    demo(int y)
    {
        super.message();
        z=y;
        System.out.println("re:"+z);
    }
}
class free{
    public static void main(String ar[]){
        demo d=new demo(6);
    }
}

3

দেখুন, আপনি এখানে বেস ক্লাসের একটি পদ্ধতিকে ওভার্রাইড করছেন তাই যদি আপনি উত্তরাধিকারসূত্রে প্রাপ্ত শ্রেণি থেকে বেস শ্রেণির পদ্ধতিটি কল করতে চান তবে উত্তরাধিকার সূত্রে প্রাপ্ত শ্রেণীর একই পদ্ধতিতে আপনাকে সুপার কীওয়ার্ড ব্যবহার করতে হবে ।


1

আপনি যদি আরম্ভের জন্য এই পদ্ধতিগুলি ব্যবহার করেন তবে ক্লাস এ এর ​​কনস্ট্রাক্টর ব্যবহার করুন এবং ক্লাস বি এর কনস্ট্রাক্টরের ভিতরে সুপার কীওয়ার্ডটি পাস করুন

অথবা আপনি যদি সাবক্লাস পদ্ধতি থেকে সুপার ক্লাসের কোনও পদ্ধতিতে কল করতে চান তবে আপনাকে সাবক্লাস পদ্ধতির মধ্যে সুপার কীওয়ার্ড ব্যবহার করতে হবে যেমন: সুপার.মিমেথড ();


1
// Using super keyword access parent class variable
class test {
    int is,xs;

    test(int i,int x) {
        is=i;
        xs=x;
        System.out.println("super class:");
    }
}

class demo extends test {
    int z;

    demo(int i,int x,int y) {
        super(i,x);
        z=y;
        System.out.println("re:"+is);
        System.out.println("re:"+xs);
        System.out.println("re:"+z);
    }
}

class free{
    public static void main(String ar[]){
        demo d=new demo(4,5,6);
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.