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

การสืบทอดคือระบบในการเขียนโปรแกรมเชิงวัตถุที่อนุญาตให้วัตถุสนับสนุนการดำเนินการที่กำหนดโดยชนิดล่วงหน้าโดยไม่ต้องให้คำจำกัดความของตนเอง มันเป็นเวกเตอร์ที่สำคัญสำหรับความหลากหลายในการเขียนโปรแกรมเชิงวัตถุ

8
จะขยายฟังก์ชันด้วยคลาส ES6 ได้อย่างไร?
Наэтотвопросестьответына Stack Overflow нарусском : Наследованиеотфункции ES6 ช่วยให้สามารถขยายวัตถุพิเศษได้ ดังนั้นจึงเป็นไปได้ที่จะสืบทอดจากฟังก์ชัน สามารถเรียกวัตถุดังกล่าวเป็นฟังก์ชันได้ แต่ฉันจะใช้ตรรกะสำหรับการเรียกดังกล่าวได้อย่างไร class Smth extends Function { constructor (x) { // What should be done here super(); } } (new Smth(256))() // to get 256 at this call? thisวิธีการเรียนที่ได้รับการอ้างอิงถึงเช่นชั้นผ่าน แต่เมื่อมันจะเรียกว่าเป็นฟังก์ชั่นหมายถึงthis windowฉันจะรับการอ้างอิงไปยังอินสแตนซ์คลาสได้อย่างไรเมื่อเรียกว่าเป็นฟังก์ชัน PS: คำถามเดียวกันในภาษารัสเซีย

5
Python ขยายด้วย - ใช้ super () Python 3 vs Python 2
เดิมทีฉันอยากจะถามคำถามนี้แต่แล้วฉันก็พบว่ามันคิดไว้แล้ว ... Googling ไปรอบ ๆ ฉันพบตัวอย่างของการขยาย configparserนี้ สิ่งต่อไปนี้ใช้ได้กับ Python 3: $ python3 Python 3.2.3rc2 (default, Mar 21 2012, 06:59:51) [GCC 4.6.3] on linux2 >>> from configparser import SafeConfigParser >>> class AmritaConfigParser(SafeConfigParser): ... def __init_(self): ... super().__init__() ... >>> cfg = AmritaConfigParser() แต่ไม่ใช่กับ Python 2: >>> class AmritaConfigParser(SafeConfigParser): ... def __init__(self): …


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 …


10
จะขยายคลาสโดยไม่ต้องใช้ super ใน ES6 ได้อย่างไร?
เป็นไปได้ไหมที่จะขยายคลาสใน ES6 โดยไม่เรียกsuperเมธอดเพื่อเรียกใช้คลาสแม่ แก้ไข: คำถามอาจทำให้เข้าใจผิด มันเป็นมาตรฐานที่เราต้องโทรsuper()หรือฉันขาดอะไรไป? ตัวอย่างเช่น: class Character { constructor(){ console.log('invoke character'); } } class Hero extends Character{ constructor(){ super(); // exception thrown here when not called console.log('invoke hero'); } } var hero = new Hero(); เมื่อฉันไม่ได้เรียกsuper()คลาสที่ได้รับมาฉันจะได้รับปัญหาขอบเขต ->this is not defined ฉันใช้สิ่งนี้กับ iojs --harmony ใน v2.3.0

4
เป็นไปได้ไหมใน SASS ที่จะสืบทอดจากคลาสในไฟล์อื่น
คำถามพูดได้ทั้งหมด ตัวอย่างเช่นถ้าฉันใช้Twitter Bootstrapฉันสามารถกำหนดคลาสในสไตล์ชีต SASS ของตัวเองที่สืบทอดมาจากคลาส CSS ของ Bootstrap ได้หรือไม่ หรือการสืบทอดใน SASS ทำงานได้ภายในขอบเขตของไฟล์เดียวเท่านั้น?

7
เขตข้อมูลคงที่สืบทอดมาหรือไม่
เมื่อสมาชิกแบบคงที่ได้รับการสืบทอดพวกมันคงที่สำหรับลำดับชั้นทั้งหมดหรือเพียงแค่คลาสนั้นเช่น: class SomeClass { public: SomeClass(){total++;} static int total; }; class SomeDerivedClass: public SomeClass { public: SomeDerivedClass(){total++;} }; int main() { SomeClass A; SomeClass B; SomeDerivedClass C; return 0; } ผลรวมจะเป็น 3 ในทั้งสามอินสแตนซ์หรือจะเป็น 2 สำหรับSomeClassและ 1 สำหรับSomeDerivedClass?
102 c++  inheritance  static 

5
สืบทอด docstrings ในการสืบทอดคลาส Python
ฉันกำลังพยายามสืบทอดคลาสใน Python ฉันต้องการให้แต่ละคลาสและคลาสที่สืบทอดมามี docstrings ที่ดี ดังนั้นฉันคิดว่าสำหรับคลาสที่สืบทอดฉันต้องการที่จะ: สืบทอด docstring คลาสพื้นฐาน อาจแนบเอกสารเพิ่มเติมที่เกี่ยวข้องเข้ากับ docstring มีวิธีใด (ที่อาจสง่างามหรือไพโธนิก) ในการจัดการกับ docstring ประเภทนี้ในสถานการณ์การสืบทอดคลาสหรือไม่? แล้วการสืบทอดหลาย ๆ อย่างล่ะ?

7
การฉีดมรดกและการพึ่งพา
ฉันมีชุดของส่วนประกอบ angular2 ที่ทุกคนควรได้รับการฉีดบริการ ความคิดแรกของฉันคือการสร้างซูเปอร์คลาสและฉีดบริการที่นั่นจะดีที่สุด จากนั้นส่วนประกอบใด ๆ ของฉันจะขยายซุปเปอร์คลาสนั้น แต่วิธีนี้ไม่ได้ผล ตัวอย่างง่าย: export class AbstractComponent { constructor(private myservice: MyService) { // Inject the service I need for all components } } export MyComponent extends AbstractComponent { constructor(private anotherService: AnotherService) { super(); // This gives an error as super constructor needs an argument } …

2
การลบล้างค่าคงที่คลาสเทียบกับคุณสมบัติ
ฉันต้องการทำความเข้าใจให้ดีขึ้นว่าเหตุใดในสถานการณ์ด้านล่างจึงมีความแตกต่างในวิธีการสืบทอดค่าคงที่ของคลาสเทียบกับตัวแปรอินสแตนซ์ <?php class ParentClass { const TEST = "ONE"; protected $test = "ONE"; public function showTest(){ echo self::TEST; echo $this->test; } } class ChildClass extends ParentClass { const TEST = "TWO"; protected $test = "TWO"; public function myTest(){ echo self::TEST; echo $this->test; } } $child = new ChildClass(); $child->myTest(); $child->showTest(); …

13
Java: การเรียกใช้ super method ซึ่งเรียกว่า overridden method
public class SuperClass { public void method1() { System.out.println("superclass method1"); this.method2(); } public void method2() { System.out.println("superclass method2"); } } public class SubClass extends SuperClass { @Override public void method1() { System.out.println("subclass method1"); super.method1(); } @Override public void method2() { System.out.println("subclass method2"); } } public class Demo { public static …

11
การสืบทอดหลายรายการใน PHP
ฉันกำลังมองหาวิธีที่ดีและสะอาดเพื่อหลีกเลี่ยงข้อเท็จจริงที่ว่า PHP5 ยังไม่รองรับการสืบทอดหลายรายการ นี่คือลำดับชั้นของคลาส: ข้อความ - TextMessage -------- InvitationTextMessage - EmailMessage -------- InvitationEmailMessage คลาส Invitation * ทั้งสองประเภทมีหลายอย่างที่เหมือนกัน ฉันชอบที่จะมีคลาสผู้ปกครองทั่วไปคำเชิญที่ทั้งคู่จะสืบทอดมา น่าเสียดายที่พวกเขามีหลายสิ่งที่เหมือนกันกับบรรพบุรุษปัจจุบันของพวกเขา ... TextMessage และ EmailMessage ความปรารถนาคลาสสิกสำหรับการสืบทอดหลายรายการที่นี่ วิธีใดที่มีน้ำหนักเบาที่สุดในการแก้ปัญหานี้ ขอบคุณ!
97 php  oop  inheritance 

2
Qt รองรับสล็อตเพียวเสมือนจริงหรือไม่?
โครงการ GUI ของฉันในการQtมีจำนวนมากของ "หน้าการตั้งค่า" QWidgetเรียนที่สืบทอดโดยตรงจากทั้งหมด เมื่อเร็ว ๆ นี้ฉันตระหนักว่าคลาสเหล่านี้ทั้งหมดมีช่องคอมมอนส์ 2 ช่อง ( loadSettings()และsaveSettings()) เกี่ยวกับเรื่องนี้ฉันมีสองคำถาม: มันสมเหตุสมผลหรือไม่ที่จะเขียนคลาสนามธรรมพื้นฐานระดับกลาง (ให้ตั้งชื่อBaseConfigurationPage) ด้วยสองช่องนี้เป็นวิธีบริสุทธิ์เสมือนจริง (ทุกหน้าการกำหนดค่าที่เป็นไปได้จะมีสองวิธีนี้เสมอดังนั้นฉันจะตอบว่า "ใช่") ก่อนที่ฉันจะทำการเปลี่ยนแปลงอย่างหนักในโค้ดของฉัน (ถ้าฉันต้อง): Qt รองรับสล็อตเพียวเสมือนจริงหรือไม่? มีอะไรที่ฉันควรระวังหรือไม่? นี่คือตัวอย่างโค้ดที่อธิบายทุกอย่าง: class BaseConfigurationPage : public QWidget { // Some constructor and other methods, irrelevant here. public slots: virtual void loadSettings() = 0; virtual void saveSettings() = 0; …

5
การสืบทอดเสมือนช่วยแก้ความคลุมเครือของ "เพชร" (มรดกหลายรายการ) ได้อย่างไร
class A { public: void eat(){ cout<<"A";} }; class B: virtual public A { public: void eat(){ cout<<"B";} }; class C: virtual public A { public: void eat(){ cout<<"C";} }; class D: public B,C { public: void eat(){ cout<<"D";} }; int main(){ A *a = new D(); a->eat(); } ฉันเข้าใจปัญหาเพชรและส่วนข้างบนของรหัสไม่มีปัญหานั้น …

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