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

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

17
อะไรคือความแตกต่างที่สำคัญระหว่าง Inheritance และ Polymorphism?
ฉันถูกนำเสนอด้วยคำถามนี้ในตอนท้ายของการสอบโมดูลเปิดจองวันนี้และพบว่าตัวเองหลงทาง ฉันอ่านHead first Javaและคำจำกัดความทั้งสองดูเหมือนจะเหมือนกันทุกประการ ฉันแค่สงสัยว่าความแตกต่างที่สำคัญสำหรับจิตใจของฉันคืออะไร ฉันรู้ว่ามีคำถามที่คล้ายกันจำนวนมาก แต่ไม่มีฉันเห็นซึ่งให้คำตอบที่ชัดเจน


7
เหตุใดฉันจึงต้องประกาศตัวทำลายเสมือนสำหรับคลาสนามธรรมใน C ++
ฉันรู้ว่ามันเป็นแนวปฏิบัติที่ดีในการประกาศ destructors เสมือนจริงสำหรับคลาสพื้นฐานใน C ++ แต่เป็นสิ่งสำคัญเสมอที่จะประกาศvirtualdestructors แม้สำหรับคลาสนามธรรมที่ทำหน้าที่เป็นอินเตอร์เฟสหรือไม่ โปรดระบุเหตุผลและตัวอย่างว่าทำไม

8
__proto__ แตกต่างจาก constructor.prototype อย่างไร
function Gadget(name, color) { this.name = name; this.color = color; } Gadget.prototype.rating = 3 var newtoy = new Gadget("webcam", "black") newtoy.constructor.prototype.constructor.prototype.constructor.prototype มันจะส่งคืนวัตถุที่มีการจัดอันดับ = 3 แต่ถ้าฉันทำต่อไปนี้: newtoy.__proto__.__proto__.__proto__ nullห่วงโซ่จบลงด้วยการกลับมา นอกจากนี้ใน Internet Explorer ฉันจะตรวจสอบโมฆะได้อย่างไรหากไม่มี__proto__คุณสมบัติ

17
มีวิธีการแทนที่ตัวแปรคลาสใน Java หรือไม่
class Dad { protected static String me = "dad"; public void printMe() { System.out.println(me); } } class Son extends Dad { protected static String me = "son"; } public void doIt() { new Son().printMe(); } ฟังก์ชั่น doIt จะพิมพ์ "พ่อ" มีวิธีที่จะทำให้มันพิมพ์ "ลูกชาย" หรือไม่?

11
วิธีการขยาย / รับช่วงส่วนประกอบ?
ฉันต้องการสร้างส่วนขยายสำหรับส่วนประกอบบางส่วนที่ปรับใช้แล้วใน Angular 2 โดยไม่ต้องเขียนใหม่เกือบทั้งหมดเนื่องจากองค์ประกอบพื้นฐานสามารถรับการเปลี่ยนแปลงได้และหวังว่าการเปลี่ยนแปลงเหล่านี้จะสะท้อนให้เห็นในองค์ประกอบที่ได้รับด้วย ฉันสร้างตัวอย่างง่าย ๆ นี้เพื่อพยายามอธิบายคำถามของฉันให้ดีขึ้น: ด้วยองค์ประกอบฐานต่อไปนี้app/base-panel.component.ts: import {Component, Input} from 'angular2/core'; @Component({ selector: 'base-panel', template: '<div class="panel" [style.background-color]="color" (click)="onClick($event)">{{content}}</div>', styles: [` .panel{ padding: 50px; } `] }) export class BasePanelComponent { @Input() content: string; color: string = "red"; onClick(event){ console.log("Click color: " + this.color); } } คุณต้องการสร้างองค์ประกอบอนุพันธ์อื่นเพียงแก้ไขตัวอย่างเช่นพฤติกรรมองค์ประกอบพื้นฐานในกรณีของสีตัวอย่างapp/my-panel.component.ts: import …

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

2
การสืบทอด C ++ - ฐานที่เข้าถึงไม่ได้?
ฉันดูเหมือนจะไม่สามารถใช้คลาสฐานเป็นพารามิเตอร์ฟังก์ชั่นได้ฉันได้รับมรดกของฉันหรือไม่ ฉันมีดังต่อไปนี้ในหลักของฉัน: int some_ftn(Foo *f) { /* some code */ }; Bar b; some_ftn(&b); และ Class Bar สืบทอดมาจาก Foo ด้วยวิธีนี้: class Bar : Foo { public: Bar(); //snip private: //snip }; สิ่งนี้ควรใช้ไม่ได้หรือไม่ ฉันดูเหมือนจะไม่สามารถโทรออกได้ในฟังก์ชั่นหลักของฉัน
157 c++  inheritance 

9
ทำไมไม่เรียกใช้ superclass __init__ โดยอัตโนมัติ
เหตุใดนักออกแบบ Python จึงตัดสินใจว่า__init__()วิธีการของคลาสย่อยไม่เรียก__init__()วิธีของซูเปอร์คลาสของพวกเขาโดยอัตโนมัติเช่นเดียวกับในภาษาอื่น ๆ Pythonic และสำนวนที่แนะนำเป็นเช่นนี้หรือไม่ class Superclass(object): def __init__(self): print 'Do something' class Subclass(Superclass): def __init__(self): super(Subclass, self).__init__() print 'Do something else'


6
ความแตกต่างของ iOS ระหว่าง isKindOfClass และ isMemberOfClass
ความแตกต่างระหว่างisKindOfClass:(Class)aClassและisMemberOfClass:(Class)aClassฟังก์ชั่นคืออะไร? ฉันรู้ว่ามันเป็นเรื่องเล็ก ๆ น้อย ๆ อย่างหนึ่งคือทั่วโลกในขณะที่อีกรายการหนึ่งเป็นการแข่งขันที่ตรงกับคลาส ในสวิฟท์และisKind(of aClass: AnyClass)isMember(of aClass: AnyClass)

12
การสืบทอดกับการรวม [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา มีโรงเรียนคิดสองแห่งเกี่ยวกับวิธีการขยายปรับปรุงและนำโค้ดกลับมาใช้ใหม่ในระบบเชิงวัตถุ: การสืบทอด: ขยายการทำงานของคลาสโดยการสร้างคลาสย่อย แทนที่สมาชิก superclass ในคลาสย่อยเพื่อมอบฟังก์ชันการทำงานใหม่ สร้างเมธอด abstract / virtual เพื่อบังคับคลาสย่อยให้ "fill-in-the-blanks" เมื่อซูเปอร์คลาสต้องการอินเตอร์เฟสเฉพาะ แต่ไม่เชื่อเรื่องการใช้งาน การรวม: สร้างฟังก์ชั่นใหม่โดยนำคลาสอื่น ๆ มารวมเข้าด้วยกันในคลาสใหม่ แนบอินเตอร์เฟสทั่วไปเข้ากับคลาสใหม่นี้เพื่อการทำงานร่วมกันกับรหัสอื่น ประโยชน์ต้นทุนและผลที่ตามมาของแต่ละประเภทคืออะไร มีทางเลือกอื่นหรือไม่? ฉันเห็นการอภิปรายนี้เกิดขึ้นเป็นประจำ แต่ฉันไม่คิดว่ามันถูกถามใน Stack Overflow เลย (แม้ว่าจะมีการสนทนาที่เกี่ยวข้อง) นอกจากนี้ยังมีการขาดผลลัพธ์ที่ดีของ Google อย่างน่าประหลาดใจ

5
TypeError: module .__ init __ () รับได้สูงสุด 2 ข้อ (กำหนด 3 ข้อ)
Object.pyฉันได้กำหนดระดับในไฟล์ชื่อ เมื่อฉันพยายามสืบทอดจากคลาสนี้ในไฟล์อื่นการเรียกตัวสร้างจะสร้างข้อยกเว้น: TypeError: module.__init__() takes at most 2 arguments (3 given) นี่คือรหัสของฉัน: import Object class Visitor(Object): pass instance = Visitor() # this line throws the exception ผมทำอะไรผิดหรือเปล่า?

13
ที่รันไทม์ค้นหาคลาสทั้งหมดในแอ็พพลิเคชัน Java ที่ขยายคลาสฐาน
ฉันต้องการทำสิ่งนี้: List<Animal> animals = new ArrayList<Animal>(); for( Class c: list_of_all_classes_available_to_my_app() ) if (c is Animal) animals.add( new c() ); ดังนั้นฉันต้องการดูคลาสทั้งหมดในแอปพลิเคชันจักรวาลของฉันและเมื่อฉันพบสิ่งที่สืบทอดมาจาก Animal ฉันต้องการสร้างวัตถุใหม่ของประเภทนั้นและเพิ่มลงในรายการ สิ่งนี้ทำให้ฉันสามารถเพิ่มฟังก์ชันการทำงานโดยไม่ต้องอัปเดตรายการสิ่งต่าง ๆ ฉันสามารถหลีกเลี่ยงสิ่งต่อไปนี้: List<Animal> animals = new ArrayList<Animal>(); animals.add( new Dog() ); animals.add( new Cat() ); animals.add( new Donkey() ); ... ด้วยวิธีการข้างต้นฉันสามารถสร้างคลาสใหม่ที่ขยายขอบเขตสัตว์และมันจะถูกเลือกโดยอัตโนมัติ ปรับปรุง: 10/16/2008 9:00 น. เวลามาตรฐานแปซิฟิก: คำถามนี้ได้สร้างคำตอบที่ดีมากขอบคุณ …

5
C #: การเพิ่มกิจกรรมที่สืบทอด
ฉันมีคลาสฐานที่ประกอบด้วยเหตุการณ์ต่อไปนี้: public event EventHandler Loading; public event EventHandler Finished; ในคลาสที่สืบทอดมาจากคลาสพื้นฐานนี้ฉันพยายามเพิ่มกิจกรรม: this.Loading(this, new EventHandler()); // All we care about is which object is loading. ฉันได้รับข้อผิดพลาดต่อไปนี้: เหตุการณ์ 'BaseClass.Loading' สามารถปรากฏที่ด้านซ้ายมือของ + = หรือ - = (BaseClass ') ฉันสมมติว่าฉันไม่สามารถเข้าถึงกิจกรรมเหล่านี้เหมือนกับสมาชิกที่สืบทอดอื่น ๆ
144 c#  events  inheritance 

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