คำถามติดแท็ก interface

อินเทอร์เฟซหมายถึงจุดที่กำหนดของการโต้ตอบกับส่วนประกอบ ส่วนต่อประสานสามารถใช้งานได้ทั้งระดับฮาร์ดแวร์และซอฟต์แวร์ --- นอกจากนี้ยังอ้างถึงองค์ประกอบภาษา `interface 'ซึ่งเป็นข้อยกเว้นเพียงอย่างเดียวของการสืบทอดเดี่ยวใน Java, C # และภาษาที่คล้ายกัน

15
จุดเชื่อมต่อใน PHP คืออะไร?
การเชื่อมต่อช่วยให้คุณสามารถสร้างรหัสซึ่งกำหนดวิธีการเรียนที่ใช้มัน อย่างไรก็ตามคุณไม่สามารถเพิ่มรหัสใด ๆ ลงในวิธีการเหล่านั้นได้ คลาสนามธรรมช่วยให้คุณทำสิ่งเดียวกันพร้อมกับเพิ่มรหัสไปยังวิธีการ ตอนนี้ถ้าคุณสามารถบรรลุเป้าหมายเดียวกันกับคลาสนามธรรมทำไมเราถึงต้องมีแนวคิดของอินเทอร์เฟซ? ฉันได้รับการบอกว่ามันเกี่ยวข้องกับทฤษฎี OO จาก C ++ ถึง Java ซึ่งเป็นสิ่งที่ OO ของ PHP ตั้งอยู่ แนวคิดมีประโยชน์ใน Java แต่ไม่ใช่ใน PHP หรือไม่ มันเป็นเพียงวิธีที่จะป้องกันไม่ให้ตัวยึดในชั้นนามธรรม? ฉันพลาดอะไรไปรึเปล่า?
224 php  oop  interface  theory 

11
เหตุใดอินเตอร์เฟส C # จึงไม่มีฟิลด์
ตัวอย่างเช่นสมมติว่าฉันต้องการอินเตอร์เฟซและการใช้งานทั้งหมดจะประกอบด้วยสนามICar Yearนี่หมายความว่าทุกการใช้งานจะต้องประกาศแยกกันYearหรือไม่ จะดีกว่าหรือเปล่าที่จะกำหนดสิ่งนี้ในอินเทอร์เฟซ
223 c#  interface 

16
การสืบทอดหลายรายการใน C #
เนื่องจากการสืบทอดหลายครั้งไม่ดี (ทำให้แหล่งซับซ้อนมากขึ้น) C # ไม่ได้จัดรูปแบบดังกล่าวโดยตรง แต่บางครั้งมันจะมีประโยชน์ที่จะมีความสามารถนี้ ตัวอย่างเช่นฉันสามารถใช้รูปแบบการสืบทอดหลายแบบที่ขาดหายไปโดยใช้อินเตอร์เฟสและคลาสสามคลาสดังนี้: public interface IFirst { void FirstMethod(); } public interface ISecond { void SecondMethod(); } public class First:IFirst { public void FirstMethod() { Console.WriteLine("First"); } } public class Second:ISecond { public void SecondMethod() { Console.WriteLine("Second"); } } public class FirstAndSecond: IFirst, ISecond { First …

16
คุณจะค้นหาคลาสย่อยทั้งหมดของคลาสที่กำหนดใน Java ได้อย่างไร?
มีวิธีการอย่างไรและพยายามค้นหาคลาสย่อยทั้งหมดของคลาสที่กำหนด (หรือผู้พัฒนาระบบทั้งหมดของอินเตอร์เฟสที่กำหนด) ใน Java? ณ ตอนนี้ฉันมีวิธีการทำเช่นนี้ แต่ฉันพบว่ามันค่อนข้างไม่มีประสิทธิภาพ (ที่จะพูดน้อย) วิธีการคือ: รับรายการชื่อคลาสทั้งหมดที่มีอยู่บนเส้นทางคลาส โหลดแต่ละคลาสและทดสอบเพื่อดูว่าเป็นคลาสย่อยหรือตัวดำเนินการของคลาสหรืออินเตอร์เฟสที่ต้องการ ใน Eclipse มีคุณสมบัติที่ดีที่เรียกว่าลำดับชั้นของประเภทที่จัดการเพื่อแสดงสิ่งนี้ได้อย่างมีประสิทธิภาพ วิธีการหนึ่งไปและทำโดยทางโปรแกรม?

3
X ไม่ได้ใช้ Y (…วิธีมีตัวรับสัญญาณตัวชี้) [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ มีคำถาม & คำตอบอยู่มากมายในเรื่อง " X ไม่ได้ใช้วิธี Y (... มีตัวรับสัญญาณตัวชี้) " แต่สำหรับฉันพวกเขาดูเหมือนจะพูดถึงสิ่งต่าง ๆ และไม่ได้ใช้กับกรณีเฉพาะของฉัน ดังนั้นแทนที่จะทำคำถามที่เฉพาะเจาะจงฉันทำให้มันกว้างและเป็นนามธรรม - ดูเหมือนว่ามีหลายกรณีที่สามารถทำให้เกิดข้อผิดพลาดนี้ได้ใครบางคนสรุปได้ไหม เช่นวิธีการหลีกเลี่ยงปัญหาและถ้ามันเกิดขึ้นสิ่งที่เป็นไปได้คืออะไร? ขอบคุณ.

9
Java abstract interface
พิจารณาตัวอย่าง (ซึ่งคอมไพล์ใน java) public abstract interface Interface { public void interfacing(); public abstract boolean interfacing(boolean really); } ทำไมมันจำเป็นสำหรับอินเทอร์เฟซที่จะเป็นนามธรรม "ประกาศ"? มีกฎอื่น ๆ ที่ใช้กับอินเทอร์เฟซแบบนามธรรมหรือไม่? ในที่สุด: หากabstractล้าสมัยแล้วทำไมจึงรวมอยู่ใน Java มีประวัติสำหรับส่วนต่อประสานนามธรรมหรือไม่?
197 java  interface  abstract 

24
ฉันจะรู้ได้อย่างไรว่าจะสร้างอินเทอร์เฟซเมื่อใด
ฉันอยู่ในช่วงของการเรียนรู้การพัฒนาที่ฉันรู้สึกว่าฉันต้องเรียนรู้เพิ่มเติมเกี่ยวกับอินเทอร์เฟซ ฉันอ่านบ่อยเกี่ยวกับพวกเขา แต่ดูเหมือนว่าฉันไม่สามารถเข้าใจพวกเขาได้ ฉันได้อ่านตัวอย่างเช่น: คลาสสัตว์พื้นฐานพร้อมอินเทอร์เฟซ IAnimal สำหรับสิ่งต่าง ๆ เช่น 'Walk', 'Run', 'GetLegs' ฯลฯ - แต่ฉันไม่เคยทำงานอะไรมาแล้วรู้สึกเหมือน "เฮ้ฉันควรใช้อินเทอร์เฟซ นี่!" ฉันกำลังคิดถึงอะไร ทำไมมันเป็นแนวคิดที่ยากสำหรับฉันที่จะเข้าใจ! ฉันถูกข่มขู่ด้วยความจริงที่ว่าฉันอาจไม่เคยตระหนักถึงความต้องการที่เป็นรูปธรรมสำหรับคนส่วนใหญ่เนื่องจากความเข้าใจที่ขาดหายไปบางประการ! มันทำให้ฉันรู้สึกเหมือนว่าฉันขาดอะไรบางอย่างในแง่ของการเป็นนักพัฒนา! หากใครมีประสบการณ์เช่นนี้และมีความก้าวหน้าฉันจะขอบคุณเคล็ดลับในการทำความเข้าใจแนวคิดนี้ ขอบคุณ.

5
อาร์กิวเมนต์สุดท้ายในวิธีการเชื่อมต่อ - ประเด็นคืออะไร?
ใน Java การกำหนดfinalอาร์กิวเมนต์ในเมธอดอินเทอร์เฟซนั้นถูกกฎหมายอย่างสมบูรณ์และไม่ปฏิบัติตามในคลาสการนำไปใช้งานเช่น: public interface Foo { public void foo(int bar, final int baz); } public class FooImpl implements Foo { @Override public void foo(final int bar, int baz) { ... } } ในตัวอย่างข้างต้นbarและbazมีfinalคำจำกัดความที่ตรงกันข้ามในคลาส VS อินเทอร์เฟซ ในทำนองเดียวกันไม่มีการfinalบังคับใช้ข้อ จำกัด ใด ๆ เมื่อเมธอดคลาสหนึ่งขยายอีกวิธีหนึ่งabstractหรือไม่ก็ได้ ในขณะที่finalมีค่าที่ใช้งานได้จริงบางส่วนในตัวเมธอดคลาสมีจุดใดบ้างที่ระบุfinalสำหรับพารามิเตอร์วิธีการอินเทอร์เฟซ?
192 java  class  interface  methods  final 

18
แบบอักษรที่กำหนดเองและเค้าโครง XML (Android)
ฉันพยายามกำหนดโครงร่าง GUI โดยใช้ไฟล์ XML ใน Android เท่าที่ฉันสามารถหาได้ไม่มีวิธีที่จะระบุว่าวิดเจ็ตของคุณควรใช้แบบอักษรที่กำหนดเอง (เช่นที่คุณวางไว้ในสินทรัพย์ / font /) ในไฟล์ XML และคุณสามารถใช้แบบอักษรที่ติดตั้งระบบเท่านั้น ฉันรู้ว่าในโค้ด Java ฉันสามารถเปลี่ยนแบบอักษรของแต่ละวิดเจ็ตด้วยตนเองโดยใช้ ID ที่ไม่ซ้ำกัน อีกทางหนึ่งฉันสามารถวนซ้ำวิดเจ็ตทั้งหมดใน Java เพื่อทำการเปลี่ยนแปลงนี้ แต่อาจช้ามาก ฉันมีตัวเลือกอื่น ๆ อีกบ้าง? มีวิธีใดที่ดีกว่าในการสร้างวิดเจ็ตที่มีรูปลักษณ์ที่กำหนดเองหรือไม่? ฉันไม่ต้องการเปลี่ยนแบบอักษรด้วยตนเองสำหรับวิดเจ็ตใหม่ทุกอันที่ฉันเพิ่มด้วยตนเอง

6
IntelliJ IDEA ข้ามจากอินเทอร์เฟซไปสู่การใช้คลาสใน Java
มีทางลัดบ้างไหมที่จะทำให้ฉันหลังจากสร้างวิธีในส่วนต่อประสานเลือกและข้ามไปยังการใช้คลาสของส่วนต่อประสานนั้น?

9
วิธีสร้างคลาส Java ที่ใช้หนึ่งอินเตอร์เฟสที่มีสองประเภททั่วไป?
ฉันมีอินเทอร์เฟซทั่วไป public interface Consumer<E> { public void consume(E e); } ฉันมีคลาสที่ใช้วัตถุสองประเภทดังนั้นฉันต้องการทำสิ่งที่ชอบ: public class TwoTypesConsumer implements Consumer<Tomato>, Consumer<Apple> { public void consume(Tomato t) { ..... } public void consume(Apple a) { ...... } } เห็นได้ชัดว่าฉันไม่สามารถทำเช่นนั้นได้ แน่นอนฉันสามารถใช้การจัดส่งได้เองเช่น public class TwoTypesConsumer implements Consumer<Object> { public void consume(Object o) { if (o instanceof Tomato) …

11
ฉันจะใช้ส่วนต่อประสานเป็นข้อ จำกัด ประเภท C # ทั่วไปได้อย่างไร
มีวิธีรับฟังก์ชั่นการประกาศต่อไปนี้หรือไม่? public bool Foo<T>() where T : interface; กล่าวคือ โดยที่ T เป็นประเภทอินเตอร์เฟส (คล้ายกับwhere T : classและstruct) ขณะนี้ฉันได้ตัดสิน: public bool Foo<T>() where T : IBase; ที่ IBase ถูกกำหนดให้เป็นอินเตอร์เฟสว่างที่สืบทอดโดยอินเตอร์เฟสแบบกำหนดเองทั้งหมดของฉัน ... ไม่เหมาะ แต่ควรใช้งานได้ ... ทำไมคุณไม่สามารถกำหนดประเภททั่วไปต้องเป็นส่วนติดต่อได้ สำหรับสิ่งที่คุ้มค่าฉันต้องการสิ่งนี้เพราะFooทำสิ่งที่ต้องการอินเทอร์เฟซชนิด ... ฉันสามารถส่งมันเป็นพารามิเตอร์ปกติและทำการตรวจสอบที่จำเป็นในฟังก์ชั่นของตัวเอง สมมติว่ามีประสิทธิภาพมากกว่านี้เล็กน้อยเนื่องจากการตรวจสอบทั้งหมดเสร็จสิ้นในเวลารวบรวม)

17
มีอินเทอร์เฟซมากกว่าวิธีการที่ถูกต้องหรือไม่
ดังนั้นสมมติว่าฉันมีอินเทอร์เฟซนี้: public interface IBox { public void setSize(int size); public int getSize(); public int getArea(); //...and so on } และฉันมีคลาสที่ใช้งาน: public class Rectangle implements IBox { private int size; //Methods here } ถ้าฉันต้องการใช้อินเทอร์เฟซ IBox ฉันไม่สามารถสร้างอินสแตนซ์ของมันได้ตามจริง: public static void main(String args[]) { Ibox myBox=new Ibox(); } ขวา? ดังนั้นฉันต้องทำสิ่งนี้จริง: public static void …

7
อินเทอร์เฟซสืบทอดจากคลาส Object ใน java
อินเตอร์เฟสได้รับมรดกจากObjectคลาสใน Java หรือไม่? ถ้าไม่เช่นนั้นเราจะสามารถเรียกใช้เมธอดคลาสอ็อบเจ็กต์บนอินสแตนซ์ของอินเตอร์เฟสได้อย่างไร public class Test { public static void main(String[] args) { Employee e = null; e.equals(null); } } interface Employee { }

10
ส่วนต่อประสานการทำงานที่ใช้ใน Java 8 คืออะไร?
ฉันเจอคำศัพท์ใหม่ใน Java 8: "functional interface" ฉันเท่านั้นที่สามารถหาหนึ่งใช้ประโยชน์จากมันขณะที่ทำงานกับการแสดงออกแลมบ์ดา Java 8 มีอินเทอร์เฟซการทำงานบางอย่างในตัวและหากเราต้องการกำหนดอินเตอร์เฟสการทำงานใด ๆ เราสามารถใช้@FunctionalInterfaceคำอธิบายประกอบได้ มันจะช่วยให้เราประกาศเพียงวิธีเดียวในอินเทอร์เฟซ ตัวอย่างเช่น: @FunctionalInterface interface MathOperation { int operation(int a, int b); } มีประโยชน์อย่างไรใน Java 8 นอกเหนือจากการทำงานกับการแสดงออกแลมบ์ดา ? (คำถามที่นี่แตกต่างจากที่ฉันถามมันถามว่าทำไมเราถึงต้องมีอินเตอร์เฟซที่ใช้งานได้ในขณะที่ทำงานกับการแสดงออกแลมบ์ดาคำถามของฉันคือ: ทำไมการใช้งานอื่น ๆ
154 java  lambda  interface  java-8 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.