प्रौद्योगिकी साझेदारी

[जावा परिचयः] Day15 - अन्तरफलकम्

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

[जावा परिचयः] Day15 - अन्तरफलकम्



किमर्थं अन्तरफलकम् अस्ति ?
यथा वयं सर्वे जानीमः, उत्तराधिकारः उपवर्गे सामान्यानि अमूर्ततानि मातापितृवर्गे निष्कासयितुं, प्राप्तुं च भवतिसमग्रव्यवस्थायाः सामान्यताकोडं रक्षितुं तु एतादृशी स्थितिः अपि अस्ति यत् अधिकांश उपवर्गेषु निश्चितसामान्यता भवति, परन्तु केवलं कतिपयेषु उपवर्गेषु एतत् विशेषता नास्ति, तर्हि यदि एषा सामान्यता मातापितृवर्गे लिखिता भवति तर्हि एतत् उत्तराधिकारं प्राप्स्यति , यत् अयुक्तम् अस्ति एते कतिचन उपवर्गाः।
यथा : बिडालः श्वः च तरितुं शक्नुवन्ति, परन्तु शशाः न शक्नुवन्ति क्रमशः भवितुं शक्नोति । अतः एतयोः उपवर्गयोः "तैरण" पद्धतीनां लेखनविशिष्टतां बाधितुं नूतना अवधारणा परिभाषितव्या ।अस्मिन् क्षणे वयं "तैरणम्" इति परिभाषयितुं शक्नुमः ।अन्तरफलकम्, अन्तरफलके swim() इति अमूर्तविधिं परिभाषयन्तु, ततः सुनिश्चित्य बिडालाः श्वाः च अस्मिन् अन्तरफलके सम्बद्धाः भवेयुःसंहिता एकीकरण
सारांशतः अन्तरफलकं कनियम, यदा अस्माभिः एकस्मिन् समये बहुविधवर्गाणां नियमाः परिभाषितव्याः भवन्ति तदा अस्माभिः उपयोगः करणीयःअन्तरफलकम्

1. अन्तरफलकं “व्यवहारस्य” अमूर्तता अस्ति ।

अन्तरफलकं वस्तुनः प्रकारस्य प्रतिनिधित्वं न करोति, अन्तरफलकं प्रतिनिधित्वं करोतिa rule, अतः अन्तरफलकाः विधिभ्यः पैरामीटर्रूपेण पारयितुं शक्यन्ते ।
"ट्रकं वा, त्रिचक्रिका वा, जनशक्तिः वा यावत् चलितुं शक्नोति तावत् उपयोगी भविष्यति।"

搬家(车的对象);
  • 1
搬家(搬家公司);
  • 1
public interface 运输 {
	...
}
  • 1
  • 2
  • 3
public void 搬家(运输的接口 c) {
	...
}
  • 1
  • 2
  • 3

2. अन्तरफलकानां परिभाषा उपयोगः च

  • अन्तरफलकाः कीवर्ड अन्तरफलकेन सह परिभाषिताः भवन्ति ।
public interface 接口名 {}
  • 1
  • अन्तरफलकानां उदाहरणं कर्तुं न शक्यते, यस्य अर्थः अस्ति यत् अन्तरफलकानां उपयोगः वस्तुनिर्माणार्थं कर्तुं न शक्यते ।
  • अन्तरफलकस्य वर्गस्य च भेदः अस्तिपूरयतुसम्बन्धाः implements कीवर्ड इत्यनेन प्रतिनिधित्वं कुर्वन्ति ।
public class 类名 implements 接口名 {}
  • 1
  • अन्तरफलकस्य उपवर्गः (कार्यन्वयनवर्गः) अन्तरफलके सर्वाणि अमूर्तविधयः अधिलिखति वा, अथवा स्वयं अमूर्तवर्गः अस्ति ।
  • अन्तरफलकानां वर्गानां च मध्ये कार्यान्वयनसम्बन्धः भवितुम् अर्हतिएकल कार्यान्वयन, अपि शक्नोतिअनेकाः कार्यान्वयनम्
public class 类名 implements 接口名1 , 接口名2 {}
  • 1
  • कार्यान्वयनवर्गः वर्गं उत्तराधिकारं गृह्णन् बहुविधं अन्तरफलकं कार्यान्वितुं शक्नोति ।
public class 类名 extends 父类 implements 接口名1 , 接口名2 {}
  • 1

अभ्यासः:अन्तरफलकैः अमूर्तवर्गैः च सह मानकजावाबीनवर्गान् लिखन्तु ।

 青蛙		属性:名字,年龄		行为:吃虫子,蛙泳
 狗			属性:名字,年龄		行为:吃骨头,狗刨
 兔子		属性:名字,年龄		行为:吃胡萝卜
  • 1
  • 2
  • 3

प्रथमं मातापितृवर्गं लिखन्तु यतः त्रयः उपवर्गाः भिन्नानि वस्तूनि खादन्ति, अतः भवान् eat() इति अमूर्तविधिरूपेण परिभाषितुं शक्नोति:

package oopInterface;

public abstract class Animal {
    private String name;
    private int age;

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public abstract void eat();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

लेखन अन्तरफलकं तरणम् : १.

package oopInterface;

public interface Swim {
    public abstract void swim();
}
  • 1
  • 2
  • 3
  • 4
  • 5

मण्डूकवर्गं लिखे सति मातापितृवर्गस्य उत्तराधिकारं प्राप्तुं मातापितृवर्गस्य अमूर्तविधिं च पुनर्लेखनं प्रति ध्यानं ददातु, तथा च तैरणान्तरफलकस्य कार्यान्वयनस्य विषये ध्यानं ददातु:

package oopInterface;

public class Frog extends Animal implements Swim {
    public Frog() {
        super();
    }

    public Frog(String name, int age) {
        super(name, age);
    }

    @Override
    public void swim() {
        System.out.println("青蛙在蛙泳。");
    }

    @Override
    public void eat() {
        System.out.println("青蛙在吃虫子。");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

श्वापदवर्गं लिखन् मातापितृवर्गस्य उत्तराधिकारं प्राप्तुं मातापितृवर्गस्य अमूर्तविधिं अधिलिखित्वा तैरणान्तरफलकं कार्यान्वितुं ध्यानं ददातु:

package oopInterface;

public class Dog extends Animal implements Swim {

    public Dog(){
        super();
    }

    public Dog(String name, int age) {
        super(name,age);
    }
    @Override
    public void swim() {
        System.out.println("狗在狗刨。");
    }

    @Override
    public void eat() {
        System.out.println("狗在吃骨头。");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

शशवर्गं लिखन्, ध्यानं कुर्वन्तु यत् भवद्भिः केवलं मातापितृवर्गं उत्तराधिकारं प्राप्तुं अमूर्तविधिं च अधिलिखितव्यं, तथा च तैरण-अन्तरफलकं कार्यान्वितुं आवश्यकता नास्ति (भवन्तः तरितुं न शक्नुवन्ति):

package oopInterface;

public class Rabbit extends Animal {

    public Rabbit() {
    }

    public Rabbit(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("兔子在吃胡萝卜。");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

परीक्षणवर्गाः लिखन्तु।

package oopInterface;

public class Test {
    public static void main(String[] args) {
        Frog f = new Frog("小绿",23);
        f.eat();
        f.swim();
        System.out.println(f.getName() + ", " + f.getAge());
        Dog d = new Dog("大D", 24);
        d.eat();
        d.swim();
        System.out.println(d.getName() + ", " + d.getAge());
        Rabbit r = new Rabbit("兔子", 30);
        r.eat();
        System.out.println(r.getName() + ", " + r.getAge());
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

3. अन्तरफलके सदस्यानां लक्षणम्

  • सदस्यचराः : अन्तरफलके सदस्यचराः केवलं भवितुम् अर्हन्तिनियत, public static final इत्यस्य उपयोगः पूर्वनिर्धारितरूपेण भवति (यदि भवान् न लिखति चेदपि स्वयमेव एवं विचार्यते) ।
  • कन्स्ट्रक्टरः अन्तरफलकम्नहिनिर्माणविधि।
  • सदस्यविधयः : JDK7 इत्यस्मात् पूर्वं ते केवलं अमूर्तविधयः एव भवितुम् अर्हन्ति स्म ।मूलभूतम्‌संशोधकः JDK8 इत्यस्य अनन्तरं सार्वजनिकः अमूर्तः अस्ति, JDK9 इत्यस्य अनन्तरं विधिशरीरैः सह पद्धतयः परिभाषितुं शक्यन्ते, निजीविधयः अन्तरफलकेषु परिभाषितुं शक्यन्ते;

4. अन्तरफलकानां वर्गानां च सम्बन्धः

  • वर्गानां मध्ये सम्बन्धः : उत्तराधिकारसम्बन्धः - केवलं एकः उत्तराधिकारः, बहु उत्तराधिकारः न, परन्तु बहुस्तरीयः उत्तराधिकारः सम्भवः।
  • वर्गानां अन्तरफलकानां च सम्बन्धः : कार्यान्वयनसम्बन्धः - एतत् एकान्ते वा बहुविधकार्यन्वयनेषु वा कार्यान्वितुं शक्यते, तथा च भवान् वर्गं उत्तराधिकारं प्राप्य बहुविधं अन्तरफलकं कार्यान्वितुं अपि शक्नोति
  • अन्तरफलकानां मध्ये सम्बन्धः : उत्तराधिकारसम्बन्धः - एकः उत्तराधिकारः अथवा बहु उत्तराधिकारः भवितुम् अर्हति ।

सूचना:
1. यदा कश्चन वर्गः अन्तरफलकं कार्यान्वयति तदा अन्तरफलके सर्वाणि अमूर्तविधयः कार्यान्वितुं वा अर्हति, अथवा वर्गः एव अमूर्तवर्गः अपि भवति ।
2. एकः वर्गः बहुविधं अन्तरफलकं कार्यान्वितुं शक्नोति यदि सः बहुविधं अन्तरफलकं कार्यान्वितवान् तर्हि तस्य आवश्यकता अस्तिसर्वेअन्तरफलके कार्यान्वितुं सर्वाणि अमूर्तविधयः कार्यान्विताः भवन्ति ।
3. यदि उप-अन्तरफलकं बहु-अन्तरफलकात् उत्तराधिकारं प्राप्नोति ततः कार्यान्वयन-वर्गेण कार्यान्वितं भवति, तर्हि कार्यान्वयन-वर्गेण उप-अन्तरफलकं तस्य सर्वान् मातापितृ-अन्तरफलकान् च संयोजयितुं शक्यतेसर्वेसर्वाणि अमूर्तविधयः कार्यान्विताः भवन्ति।

अभ्यासः:अन्तरफलकैः अमूर्तवर्गैः च सह मानकजावाबीनवर्गान् लिखन्तु ।

乒乓球运动员:姓名,年龄,学打乒乓球,说英语
篮球运动员:姓名,年龄,学打篮球
乒乓球教练:姓名,年龄,教打乒乓球,说英语
篮球教练:姓名,年龄,教打篮球
  • 1
  • 2
  • 3
  • 4
//Person类
package oopInterExp;

//因为直接创建顶层父类人的对象是没有意义的
//所以将其写为抽象类
public abstract class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Person() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
//Sporter类继承Person
package oopInterExp;

public abstract class Sporter extends Person {

    public Sporter(String name, int age) {
        super(name, age);
    }

    public Sporter() {
    }

    public abstract void learn();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
//Coach类继承Person
package oopInterExp;

public abstract class Coach extends Person {

    public Coach() {
    }

    public Coach(String name, int age) {
        super(name, age);
    }

    public abstract void teach();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
//SpeakEnglish接口
package oopInterExp;

public interface SpeakEnglishInter {
    public abstract void speakEnglish();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
//PingPongSporter继承Sporter,实现SpeakEnglish
package oopInterExp;

public class PingPongSporter extends Sporter implements SpeakEnglishInter {

    public PingPongSporter(String name, int age) {
        super(name, age);
    }

    public PingPongSporter() {
    }

    @Override
    public void learn() {
        System.out.println("学习乒乓球。");
    }

    @Override
    public void speakEnglish() {
        System.out.println("乒乓球运动员在说英语。");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
//PingPongCoach继承Coach,实现SpeakEnglish
package oopInterExp;

public class PingPongCoach extends Coach implements SpeakEnglishInter {
    public PingPongCoach() {
    }

    public PingPongCoach(String name, int age) {
        super(name, age);
    }

    @Override
    public void teach() {
        System.out.println("教乒乓球。");
    }

    @Override
    public void speakEnglish() {
        System.out.println("乒乓球教练在说英语。");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
//BasketballSporter继承Sporter
package oopInterExp;

public class BasketballSporter extends Sporter {

    public BasketballSporter(String name, int age) {
        super(name, age);
    }

    public BasketballSporter() {
    }

    public void learn() {
        System.out.println("学篮球。");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
//BasketballCoach继承Coach
package oopInterExp;

public class BasketballCoach extends Coach {

    public BasketballCoach() {
    }

    public BasketballCoach(String name, int age) {
        super(name, age);
    }

    public void teach() {
        System.out.println("教篮球。");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

5. अन्तरफलके नूतनाः पद्धतयः

5.1 JDK8 start interface इत्यस्मिन् नूतनाः पद्धतयः

JDK7 इत्यस्मात् पूर्वं केवलं अमूर्तविधयः एव अन्तरफलकेषु परिभाषितुं शक्यन्ते स्म ।
JDK8 इत्यस्य नूतनं विशेषता अस्ति: विधिशरीरयुक्ताः विधिः अन्तरफलके परिभाषितुं शक्यते (परिभाषितुं शक्यतेमूलभूतम्‌विधिः वास्थिरःप्रक्रिया)।
JDK9 इत्यस्य नूतनं विशेषता अस्ति: अन्तरफलके परिभाषितुं शक्यतेवैयक्तिकप्रक्रिया।

५.१.१ अन्तरफलकेषु पूर्वनिर्धारितविधयः

विधिशरीरयुक्ताः पद्धतयः अन्तरफलके परिभाषिताः सन्ति, मुख्यतया कृतेअन्तरफलक उन्नयनअन्तरफलकं अपरिवर्तनीयं न भवितुम् अर्हति इति विचार्य, उन्नयनार्थं तस्मिन् नूतनाः पद्धतयः योजयितुं आवश्यकाः यदि एताः पद्धतयः अमूर्तविधयः सन्ति तर्हि अस्मिन् समये एताः पद्धतयः कार्यान्वयनवर्गे एकस्मिन् समये कार्यान्वितुं आवश्यकाः सन्ति, यत् अतीव कष्टप्रदं भवति तथा च समन्वयनं सुलभं नास्ति;यदि उन्नयनं विधिशरीरेण सह विधिं प्रयुङ्क्ते, अतः कार्यान्वयनवर्गस्य अतिरिक्तरूपेण परिवर्तनस्य आवश्यकता नास्ति यदि परिवर्तनस्य आवश्यकता अस्ति तर्हि पुनर्लेखनेन अपि परिवर्तनं कर्तुं शक्यते ।

  • अन्तरफलके पूर्वनिर्धारितविधिः परिभाषितुं भवद्भिः कीवर्डस्य उपयोगः करणीयः मूलभूतम्‌ संस्कारः ।
  • प्रारूप: सार्वजनिक पूर्वनिर्धारित return value type विधिनाम (पैरामीटरसूची) { }
  • उदाहरणम् : public default void show() { } .
  • पूर्वनिर्धारितविधयः अमूर्तविधयः न सन्ति, तेषां अधिलिखनं न करणीयम् । परन्तु यदि पुनर्लेखनं भवति तर्हि पुनर्लेखनकाले पूर्वनिर्धारितं कीवर्डं अवश्यमेव निष्कासितव्यम् ।
  • public इत्येतत् लोपयितुं शक्यते, परन्तु पूर्वनिर्धारितं लोपं कर्तुं न शक्यते ।
  • यदि बहुविधाः अन्तरफलकाः कार्यान्विताः सन्ति तथा च बहुषु अन्तरफलकेषु समाननाम्ना पूर्वनिर्धारितविधयः सन्ति, तर्हि उपवर्गेण विधिः अधिलिखितव्यः (अधिक्रमणं न करणं विग्रहं जनयिष्यति)

अन्तरफलक अन्तर्१: १.

package oopInterface5;

public interface Inter1 {
    public abstract void method();
    public default void default_method() {
        System.out.println("Inter1接口中的默认方法");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

अन्तरफलक अन्तरफलकम् २: १.

package oopInterface5;

public interface Inter2 {
    public default void default_method() {
        System.out.println("Inter2接口中的默认方法");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

पूर्वनिर्धारितविधिद्वयस्य नाम समानं भवति यदि कार्यान्वयनवर्गः एतौ अन्तरफलकौ एकस्मिन् समये कार्यान्वयति तर्हि एषा पूर्वनिर्धारितविधिः पुनः लिखितव्या!

package oopInterface5;

public class InterImpl implements Inter1, Inter2 {

    @Override
    public void method() {
        System.out.println("抽象方法的实现");
    }

    @Override
    public void default_method() {
        System.out.println("重写接口中的默认方法");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

परीक्षणवर्गः : १.

package oopInterface5;

public class Test {
    public static void main(String[] args) {
            InterImpl ii = new InterImpl();
            ii.method();				//抽象方法的实现
            ii.default_method();		//重写接口中的默认方法
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
५.१.२ अन्तरफलकेषु स्थिरविधयः

JDK8 अपि च ततः परं स्थिरविधयः अन्तरफलकेषु परिभाषितुं अनुमतिं दास्यति, येषां स्थिरेन सह परिवर्तनस्य आवश्यकता वर्तते ।
अन्तरफलकेस्थिरविधिःपरिभाषास्वरूपम् अस्ति : १.

  • public static return value type विधि नाम (पैरामीटर सूची) { } .
  • उदाहरणम् : public static void show() { } .

अन्तरफलकेषु स्थिरविधिनाम् विषये ज्ञातव्याः विषयाः : १.

  • स्थिरविधयः केवलं उत्तीर्णं कर्तुं शक्नुवन्तिअन्तरफलकस्य नामआह्वानं कृतम्, कार्यान्वयनवर्गनाम वा वस्तुनाम वा माध्यमेन आह्वानं कर्तुं न शक्यते ।
  • सार्वजनिकं लोपयितुं शक्यते, स्थिरं लोपयितुं न शक्यते।

एकं अन्तरफलकं लिखन्तु : १.

package oopInterface6;

public interface Inter {
    public abstract void method();

    public static void static_method() {
        System.out.println("接口中的静态方法");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

कार्यान्वयनवर्गं लिखन्तु वर्गे अन्तरफलके विधिना सह समाननाम्ना अपि स्थिरविधिः अस्ति, परन्तु एतत् अधिलिखितं नास्ति यतोहि स्थिरविधयः अधिलिखितुं न शक्यन्ते:

package oopInterface6;

public class InteImpl implements Inter {
    @Override
    public void method() {
        System.out.println("重写接口中的抽象方法");
    }

    //这不叫重写
    public static void static_method() {
        System.out.println("我不是重写的Inter接口中的静态方法");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

किन्तु वस्तुतः तयोः भिन्नविधिः ।

package oopInterface6;

public class Test {
    public static void main(String[] args) {
        InteImpl ii = new InteImpl();
        ii.method();						  //重写接口中的抽象方法
        Inter.static_method();               //调用接口中的静态方法
        InteImpl.static_method();           //调用实现类中的一个同名的静态方法
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

5.2 JDK9 start interface इत्यस्मिन् नूतनाः पद्धतयः

५.२.१ अन्तरफलके निजीविधयः परिभाषयन्तु
  • प्रारूपः १: निजी return value type विधिनाम (पैरामीटर् सूची) { } .
  • उदाहरणम् १: private void show() { } .
  • उपयोगः : पूर्वनिर्धारितविधिं सेवन्तु ।
package oopInterface7;

public interface InterA {
    public default void show1() {
        System.out.println("show1开始执行");
        show3();
    }

    public default void show2() {
        System.out.println("show2开始执行");
        show3();
    }

    //普通的私有方法,给默认方法服务的
    private void show3() {
        System.out.println("记录程序在运行过程中的各种细节,这里有100行代码。");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • प्रारूप 2: private static return value type विधिनाम (पैरामीटरसूची) { }
  • उदाहरणम् २: private static void method() { } .
  • प्रयोगः स्थिरविधयः सेवन्तु।
package oopInterface7;

public interface InterB {
    public static void show1() {
        System.out.println("show1开始执行");
        show3();
    }

    public static void show2() {
        System.out.println("show2开始执行");
        show3();
    }

    //普通的私有方法,给静态方法服务的
    private static void show3() {
        System.out.println("记录程序在运行过程中的各种细节,这里有100行代码。");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

6. अन्तरफलकस्य अनुप्रयोगः

1. अन्तरफलकं नियमानाम् प्रतिनिधित्वं करोति व्यवहारस्य अमूर्तता च अस्ति। यदि भवान् इच्छति यत् कस्यचित् वर्गस्य व्यवहारः भवतु तर्हि केवलं वर्गं तत्सम्बद्धं अन्तरफलकं कार्यान्वितुं ददातु ।
2. यदा कस्यचित् विधिस्य पैरामीटर् अन्तरफलकं भवति तदा अन्तरफलकं पारयितुं शक्यतेकार्यान्वयनवर्गस्य सर्वाणि वस्तुनि, एषः उपायः अन्तरफलकबहुरूपता इति कथ्यते ।

7. एडाप्टर डिजाइन पैटर्न

  • Design Pattern इति वर्गीकृतानां सूचीकृतानां च कोडडिजाइन-अनुभवानाम् एकः समुच्चयः अस्ति यस्य उपयोगः पुनः पुनः भवति, अधिकांशजनानां कृते ज्ञातः । डिजाइन-प्रतिमानानाम् उपयोगस्य उद्देश्यं कोडस्य पुनः उपयोगः, अन्यैः कोडस्य अवगमनं सुलभं कर्तुं, कोडस्य विश्वसनीयतां सुनिश्चितं कर्तुं, कार्यक्रमस्य पुनः उपयोगाय च भवति ।

एडाप्टर्-इत्यस्य उपयोगः कोडस्य सरलीकरणाय तथा च यदा अन्तरफलके अत्यधिकाः अमूर्तविधयः सन्ति तदा उत्पद्यमानं असुविधां परिहरितुं शक्यते तथा च अस्माभिः केवलं तेषां भागस्य उपयोगः करणीयः
लेखनपदार्थाः सामान्यतया सन्ति : १.
1. तत्सम्बद्धं अन्तरफलकं कार्यान्वितुं मध्यवर्तीवर्गं XXXAdapter लिखन्तु ।
2. अन्तरफलके अमूर्तविधिनाम् रिक्तकार्यन्वयनानि कार्यान्वितुं।
3. वास्तविकं कार्यान्वयनवर्गं मध्यवर्तीवर्गं उत्तराधिकारं प्राप्य आवश्यकानि पद्धतीनि पुनः लिखतु।
4. अन्यवर्गाः एडाप्टरवर्गस्य वस्तुनिर्माणं न कर्तुं मध्यवर्ती एडाप्टरवर्गः अमूर्तेन अलङ्कृतः भवति ।

अन्तरफलकम् : १.

package AdapterDesignPattern;

public interface Inter {
    public abstract void method1();
    public abstract void method2();
    public abstract void method3();
    public abstract void method4();
    public abstract void method5();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

एडाप्टर वर्गः : १.

package AdapterDesignPattern;

public abstract class InterAdapter implements Inter {
    @Override
    public void method1() {

    }

    @Override
    public void method2() {

    }

    @Override
    public void method3() {

    }

    @Override
    public void method4() {

    }

    @Override
    public void method5() {

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

कार्यान्वयनवर्गः : १.

package AdapterDesignPattern;

public class InterImpl extends InterAdapter {
    //我需要用到哪个方法,就重写哪个方法就可以了
    @Override
    public void method5() {
        System.out.println("只要用第五个方法");
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10