मुझे यहां आने और यह पूछने से नफरत है कि शायद एक बेवकूफ सवाल क्या है, लेकिन मैं एक कोडिंग छात्र हूं और मेरे शिक्षक ने इंटरफेस के विषय पर बहुत कम जानकारी की पेशकश की है, लेकिन मेरे पास एक असाइनमेंट है, और मुझे कॉल करने में समस्या हो रही है एक इंटरफ़ेस के भीतर एक विधि जिसे एक वर्ग कार्यान्वित कर रहा है। मैं जो प्रोजेक्ट बना रहा हूं उसका कोड यहां दिया गया है

import java.util.Scanner;
public class Lab2B {
   public static void main(String[] args) {
      Octagon test = new Octagon();
      System.out.printf("The octagon has a side length of %1.2f, a perimiter of %1.2f, and an area of %1.2f.", test.sideLength, test.perimiter, test.area);
   }
}

abstract class GeometricObject {
   double area;
   double perimiter;
   public GeometricObject() {

   }
}

class Octagon extends GeometricObject implements Comparable, Cloneable {
   double sideLength;
   public Octagon() {
      Scanner input = new Scanner(System.in);
      System.out.println("Enter side length of Octagon: ");
      this.sideLength = input.nextDouble();
      this.area = ((2 + (4 / Math.sqrt(2))) * this.sideLength * this.sideLength);
      this.perimiter = (this.sideLength * 8);
   }

   public void clone() {
   System.out.println("I wish I knew how to code");
   }
}


interface Cloneable {
   public void clone();
}

और यह मुझे यह त्रुटि दे रहा है

Lab2B.java:29: error: clone() in Octagon cannot override clone() in Object
public void clone() {
            ^
return type void is not compatible with Object

मुझे ईमानदारी से यकीन नहीं है कि मैं यहां क्या गलत कर रहा हूं, ऐसा लगता है कि यह एक इंटरफ़ेस के हर उदाहरण के अनुरूप है जो मुझे इंटरनेट पर मिल सकता है। कोई भी मदद बहुत ही सराहनीय होगी।

0
Brian mallet 22 सितंबर 2018, 04:07

2 जवाब

सबसे बढ़िया उत्तर

सबसे पहले, आप जावा से क्लोन करने योग्य इंटरफ़ेस को कार्यान्वित कर सकते हैं (अपना खुद का बनाने की कोई आवश्यकता नहीं है)।

साथ ही, यह थोड़ा अजीब है लेकिन क्लोन विधि ऑब्जेक्ट क्लास में है जिसे ओवरराइड करने की आवश्यकता है। (यह क्लोनेबल में होना चाहिए था)। क्लोन विधि को ओवरराइड करने के लिए, आप ऐसा कुछ कर सकते हैं:

@Override
protected Object clone() throws CloneNotSupportedException {

}

यहाँ क्लोन का उपयोग करके डीप और शालो कॉपी पर एक अच्छा पठन है:

https://howtodoinjava.com/java/cloning/a-guide-to-object-cloning-in-java/

1
Gauravsa 22 सितंबर 2018, 04:22

पहले आपको Cloneable इंटरफ़ेस घोषित नहीं करना चाहिए। यह पहले से ही मानक जावा एपीआई में मौजूद है।

हालांकि, जब तक Cloneable को लागू करना आपके असाइनमेंट के लिए विशेष रूप से आवश्यक नहीं है, आपको इसे अपने कोड से हटा देना चाहिए। Cloneable इंटरफ़ेस का डिज़ाइन आधुनिक जावा मानकों के अनुसार टूटा हुआ माना जाता है। यह केवल विरासत कोड के कारण मौजूद है जो जावा के पहली बार आविष्कार होने पर लिखा गया था।

0
Code-Apprentice 22 सितंबर 2018, 05:13