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

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

2
ไปที่ฟิลด์อินเทอร์เฟซ
ฉันคุ้นเคยกับความจริงที่ว่าใน Go อินเทอร์เฟซกำหนดฟังก์ชันการทำงานแทนที่จะเป็นข้อมูล คุณใส่ชุดวิธีการลงในอินเทอร์เฟซ แต่คุณไม่สามารถระบุฟิลด์ใด ๆ ที่จำเป็นสำหรับสิ่งที่ใช้อินเทอร์เฟซนั้น ตัวอย่างเช่น: // Interface type Giver interface { Give() int64 } // One implementation type FiveGiver struct {} func (fg *FiveGiver) Give() int64 { return 5 } // Another implementation type VarGiver struct { number int64 } func (vg *VarGiver) Give() int64 { return …
105 struct  interface  go 

2
ข้อดีข้อเสียของค่าคงที่ของอินเทอร์เฟซ [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ อินเทอร์เฟซ PHP อนุญาตให้กำหนดค่าคงที่ในอินเทอร์เฟซเช่น interface FooBar { const FOO = 1; const BAR = 2; } echo FooBar::FOO; // 1 คลาสการใช้งานใด ๆ จะมีค่าคงที่เหล่านี้โดยอัตโนมัติเช่น class MyFooBar implement FooBar { } echo MyFooBar::FOO; // 1 สิ่งนี้ของฉันเองคือสิ่งที่ Global is Evilอะไรที่ทั่วโลกเป็นความชั่วร้ายแต่ฉันสงสัยว่าสิ่งเดียวกันนี้ใช้กับค่าคงที่ของอินเทอร์เฟซหรือไม่ เนื่องจากการเข้ารหัสกับอินเทอร์เฟซถือเป็นแนวทางปฏิบัติที่ดีโดยทั่วไปการใช้ค่าคงที่ของอินเตอร์เฟสเป็นค่าคงที่เพียงอย่างเดียวที่ยอมรับให้ใช้นอกบริบทของคลาสได้หรือไม่ ในขณะที่ฉันอยากทราบความคิดเห็นส่วนตัวของคุณและคุณใช้ค่าคงที่ของอินเทอร์เฟซหรือไม่ แต่ฉันก็มองหาเหตุผลที่เป็นประโยชน์ในคำตอบของคุณเป็นหลัก ฉันไม่ต้องการให้เป็นคำถามประเภทการสำรวจความคิดเห็น ฉันสนใจว่าค่าคงที่ของอินเทอร์เฟซมีผลต่อการบำรุงรักษาอย่างไร …
105 php  interface  constants 

7
ทำไมอินเทอร์เฟซไม่สามารถใช้อินเทอร์เฟซอื่นได้?
ที่ฉันหมายถึงคือ: interface B {...} interface A extends B {...} // allowed interface A implements B {...} // not allowed ฉัน googled และฉันพบสิ่งนี้ : implementsหมายถึงการกำหนดการใช้งานสำหรับวิธีการของอินเทอร์เฟซ อย่างไรก็ตามอินเทอร์เฟซไม่มีการใช้งานดังนั้นจึงเป็นไปไม่ได้ อย่างไรก็ตามอินเทอร์เฟซเป็นคลาสนามธรรม 100% และคลาสนามธรรมสามารถใช้อินเทอร์เฟซ (คลาสนามธรรม 100%) ได้โดยไม่ต้องใช้วิธีการ อะไรคือปัญหาเมื่อกำหนดเป็น "อินเทอร์เฟซ" ในรายละเอียด interface A { void methodA(); } abstract class B implements A {} // we may not …

7
เหตุใดฟิลด์ทั้งหมดในอินเทอร์เฟซจึงคงที่โดยปริยายและสุดท้าย
ฉันเพียงแค่พยายามที่จะเข้าใจว่าทำไมทุกสาขาที่กำหนดไว้ใน Interface เป็นโดยปริยายและstatic finalแนวคิดในการรักษาเขตข้อมูลมีstaticความหมายสำหรับฉันเนื่องจากคุณไม่มีวัตถุของอินเทอร์เฟซ แต่ทำไมจึงเป็นfinal(โดยปริยาย)? มีใครรู้บ้างว่าทำไมนักออกแบบ Java ถึงทำฟิลด์ในอินเทอร์เฟซstaticและfinal?

13
ชั้นในภายในอินเทอร์เฟซ
เป็นไปได้ไหมที่จะสร้างคลาสภายในภายในอินเทอร์เฟซ ถ้าเป็นไปได้เหตุใดเราจึงต้องการสร้างคลาสภายในเช่นนั้นเนื่องจากเราจะไม่สร้างวัตถุอินเทอร์เฟซใด ๆ ชั้นเรียนภายในเหล่านี้ช่วยในกระบวนการพัฒนาหรือไม่?

6
อาร์เรย์ใน C # ใช้ IList <T> บางส่วนได้อย่างไร
ดังที่คุณทราบอาร์เรย์ใน C # ใช้IList&lt;T&gt;กับอินเทอร์เฟซอื่น ๆ อย่างไรก็ตามพวกเขาทำสิ่งนี้โดยไม่นำคุณสมบัติ Count ของIList&lt;T&gt;! อาร์เรย์มีคุณสมบัติความยาวเท่านั้น นี่เป็นตัวอย่างที่ชัดเจนของ C # / NET ที่ละเมิดกฎของตัวเองเกี่ยวกับการใช้งานอินเทอร์เฟซหรือฉันทำอะไรพลาดไป?
99 c#  .net  arrays  list  interface 

5
อะไรคือความแตกต่างระหว่างอินเตอร์เฟส IComparable และ IEquatable?
อินเทอร์เฟซทั้งสองดูเหมือนจะเปรียบเทียบวัตถุเพื่อความเท่าเทียมกันดังนั้นความแตกต่างที่สำคัญระหว่างพวกเขาคืออะไร?

8
วัตถุประสงค์ของคีย์เวิร์ดเริ่มต้นใน Java คืออะไร?
อินเทอร์เฟซใน Java คล้ายกับคลาส แต่เนื้อหาของอินเทอร์เฟซสามารถมีได้เฉพาะเมธอดนามธรรมและfinalฟิลด์ (ค่าคงที่) เมื่อเร็ว ๆ นี้ฉันเห็นคำถามซึ่งมีลักษณะเช่นนี้ interface AnInterface { public default void myMethod() { System.out.println("D"); } } ตามคำจำกัดความของอินเทอร์เฟซอนุญาตให้ใช้วิธีนามธรรมเท่านั้น ทำไมจึงอนุญาตให้คอมไพล์โค้ดด้านบน? อะไรคือสิ่งที่defaultคำหลัก? ในทางกลับกันเมื่อฉันพยายามเขียนโค้ดด้านล่างมันก็บอกว่า modifier default not allowed here default class MyClass{ } แทน class MyClass { } ใครช่วยบอกจุดประสงค์ของdefaultคีย์เวิร์ดได้ไหม อนุญาตเฉพาะในอินเทอร์เฟซหรือไม่? มันแตกต่างจากdefault(ไม่มีตัวปรับการเข้าถึง) อย่างไร?

3
ส่งวัตถุไปยังส่วนต่อประสานใน TypeScript
ฉันกำลังพยายามแคสต์ในโค้ดของฉันจากเนื้อหาของคำขอในแบบด่วน (โดยใช้มิดเดิลแวร์ตัวแยกวิเคราะห์เนื้อหา) ไปยังอินเทอร์เฟซ แต่ไม่ได้บังคับใช้ความปลอดภัยประเภท นี่คืออินเทอร์เฟซของฉัน: export interface IToDoDto { description: string; status: boolean; }; นี่คือรหัสที่ฉันพยายามสร้างนักแสดง: @Post() addToDo(@Response() res, @Request() req) { const toDo: IToDoDto = &lt;IToDoDto&gt; req.body; // &lt;&lt;&lt; cast here this.toDoService.addToDo(toDo); return res.status(HttpStatus.CREATED).end(); } และสุดท้ายวิธีการบริการที่เรียกว่า: public addToDo(toDo: IToDoDto): void { toDo.id = this.idCounter; this.todos.push(toDo); this.idCounter++; } ฉันสามารถส่งผ่านข้อโต้แย้งใด ๆได้แม้แต่ข้อโต้แย้งที่ไม่เข้าใกล้คำจำกัดความของอินเทอร์เฟซและรหัสนี้จะทำงานได้ดี ฉันคาดหวังว่าหากไม่สามารถส่งการส่งจากเนื้อหาการตอบสนองไปยังอินเทอร์เฟซได้ข้อยกเว้นจะถูกส่งไปที่รันไทม์เช่น …

6
วิธีเพิ่มผู้รับมอบสิทธิ์ในอินเทอร์เฟซ C #
ฉันต้องมีผู้ร่วมประชุมบางคนในชั้นเรียนของฉัน ฉันต้องการใช้อินเทอร์เฟซเพื่อ "เตือน" ให้ตั้งค่าผู้รับมอบสิทธิ์เหล่านี้ ทำอย่างไร? ชั้นเรียนของฉันมีลักษณะดังนี้: public class ClsPictures : myInterface { // Implementing the IProcess interface public event UpdateStatusEventHandler UpdateStatusText; public delegate void UpdateStatusEventHandler(string Status); public event StartedEventHandler Started; public delegate void StartedEventHandler(); } ฉันต้องการอินเทอร์เฟซเพื่อบังคับให้ผู้รับมอบสิทธิ์เหล่านั้น: public interface myInterface { // ????? }

9
ปลอดภัยสำหรับโครงสร้างในการใช้อินเทอร์เฟซหรือไม่?
ฉันดูเหมือนจะจำได้ว่าอ่านบางอย่างเกี่ยวกับการที่โครงสร้างในการใช้อินเทอร์เฟซใน CLR ผ่าน C # ไม่ดี แต่ดูเหมือนว่าฉันจะไม่พบอะไรเลย มันแย่ไหม? มีผลที่ไม่พึงประสงค์จากการทำเช่นนั้นหรือไม่? public interface Foo { Bar GetBar(); } public struct Fubar : Foo { public Bar GetBar() { return new Bar(); } }
94 c#  interface  struct 

4
เป็นไปได้หรือไม่ที่จะใช้ getters / setters ในนิยามอินเตอร์เฟส
ในขณะTypeScriptนี้ไม่อนุญาตให้ใช้เมธอด get / set (accessors) ในอินเทอร์เฟซ ตัวอย่างเช่น: interface I { get name():string; } class C implements I { get name():string { return null; } } นอกจากนี้ TypeScript ไม่อนุญาตให้ใช้ Array Function Expression ใน class method: เช่น: class C { private _name:string; get name():string =&gt; this._name; } มีวิธีอื่นใดบ้างที่ฉันสามารถใช้ getter และ setter ในนิยามอินเตอร์เฟสได้?

4
อินเทอร์เฟซที่มีวิธีการเริ่มต้นเริ่มต้นเมื่อใด
ในขณะที่ค้นหาข้อมูลจำเพาะภาษา Java เพื่อตอบคำถามนี้ฉันได้เรียนรู้สิ่งนั้น ก่อนที่คลาสจะเริ่มต้นจะต้องเริ่มต้นคลาสซูเปอร์คลาสโดยตรงแต่อินเทอร์เฟซที่ใช้โดยคลาสจะไม่ถูกเตรียมใช้งาน ในทำนองเดียวกัน superinterfaces ของอินเทอร์เฟซจะไม่ถูกเตรียมใช้งานก่อนที่อินเทอร์เฟซจะเริ่มต้น เพื่อความอยากรู้อยากเห็นของฉันเองฉันลองใช้แล้วและตามที่คาดไว้อินเทอร์เฟซInterfaceTypeไม่ได้เริ่มต้น public class Example { public static void main(String[] args) throws Exception { InterfaceType foo = new InterfaceTypeImpl(); foo.method(); } } class InterfaceTypeImpl implements InterfaceType { @Override public void method() { System.out.println("implemented method"); } } class ClassInitializer { static { System.out.println("static initializer"); } …

2
วิธีการขยายคลาสใน python
ใน python คุณจะขยายคลาสได้อย่างไร? ตัวอย่างเช่นถ้าฉันมี color.py class Color: def __init__(self, color): self.color = color def getcolor(self): return self.color color_extended.py import Color class Color: def getcolor(self): return self.color + " extended!" แต่มันไม่ได้ผล ... ฉันคาดว่าถ้าฉันใช้งานได้color_extended.pyเมื่อฉันสร้างวัตถุสีและใช้getcolorฟังก์ชั่นมันจะส่งคืนวัตถุด้วยสตริง "ขยาย!" ในตอนท้าย. นอกจากนี้ควรมี gotton เริ่มต้นจากการนำเข้า สมมติ python 3.1 ขอบคุณ

8
ฉันจะใช้วิธีการแบบคงที่บนอินเทอร์เฟซได้อย่างไร
ฉันมี C ++ DLL ของบุคคลที่สามที่ฉันเรียกจาก C # วิธีการเป็นแบบคงที่ ฉันต้องการสรุปเพื่อทำการทดสอบหน่วยดังนั้นฉันจึงสร้างอินเทอร์เฟซด้วยวิธีการแบบคงที่ แต่ตอนนี้ข้อผิดพลาดของโปรแกรมของฉันกับ: ตัวปรับแต่ง 'คงที่' ไม่ถูกต้องสำหรับรายการนี้ MyMethod cannot be accessed with an instance reference; qualify it with a type name instead ฉันจะบรรลุนามธรรมนี้ได้อย่างไร รหัสของฉันมีลักษณะเช่นนี้ private IInterfaceWithStaticMethods MyInterface; public MyClass(IInterfaceWithStaticMethods myInterface) { this.MyInterface = myInterface; } public void MyMethod() { MyInterface.StaticMethod(); }
92 c#  .net  interface 

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