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

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

29
ฉันจะอธิบายความแตกต่างระหว่างอินเทอร์เฟซกับคลาสนามธรรมได้อย่างไร
ในตอนหนึ่งของการสัมภาษณ์ของฉันฉันได้รับการถามเพื่ออธิบายความแตกต่างระหว่างนั้นอินเตอร์เฟซและระดับนามธรรม นี่คือคำตอบของฉัน: วิธีการของอินเทอร์เฟซ Java เป็นนามธรรมโดยปริยายและไม่สามารถใช้งานได้ คลาสนามธรรม Java สามารถมีวิธีการอินสแตนซ์ที่ดำเนินพฤติกรรมเริ่มต้น ตัวแปรที่ประกาศในอินเตอร์เฟส Java นั้นเป็นค่าเริ่มต้นสุดท้าย คลาสนามธรรมอาจมีตัวแปรที่ไม่สิ้นสุด สมาชิกของส่วนต่อประสาน Java เป็นสาธารณะโดยค่าเริ่มต้น คลาสนามธรรมของ Java สามารถมีสมาชิกคลาสได้ตามปกติเช่นส่วนตัวมีการป้องกัน ฯลฯ อินเทอร์เฟซ Java ควรใช้งานโดยใช้คำหลัก“ ดำเนินการ”; คลาสนามธรรมของ Java ควรถูกขยายโดยใช้คีย์เวิร์ด“ extends” อินเตอร์เฟสสามารถขยายอินเตอร์เฟส Java อื่นได้เท่านั้นคลาสนามธรรมสามารถขยายคลาส Java อื่นและใช้อินเตอร์เฟส Java หลายอินเตอร์เฟส คลาส Java สามารถใช้หลายอินเตอร์เฟส แต่สามารถขยายคลาสนามธรรมเพียงคลาสเดียวเท่านั้น อย่างไรก็ตามผู้สัมภาษณ์ไม่พอใจและบอกฉันว่าคำอธิบายนี้เป็นตัวแทนของ " ความรู้เกี่ยวกับหนอนหนังสือ " เขาถามฉันสำหรับการตอบสนองการปฏิบัติมากขึ้นอธิบายเมื่อฉันจะเลือกระดับนามธรรมมากกว่าอินเตอร์เฟซที่ใช้ตัวอย่างการปฏิบัติ ฉันไปผิดที่ไหน

22
เมื่อใดที่จะใช้อินเทอร์เฟซแทนคลาสนามธรรมและในทางกลับกัน
นี่อาจเป็นคำถาม OOP ทั่วไป ฉันต้องการทำการเปรียบเทียบทั่วไประหว่างอินเทอร์เฟซและคลาสนามธรรมบนพื้นฐานของการใช้งานของพวกเขา เมื่อใดที่จะต้องการใช้อินเทอร์เฟซและเมื่อใดที่จะต้องการใช้คลาสนามธรรม ?

12
เป็นไปได้ไหมที่จะสร้างคลาสนามธรรมใน Python?
ฉันจะทำให้คลาสหรือวิธีการเป็นนามธรรมใน Python ได้อย่างไร ฉันลองนิยามใหม่__new__()เช่น: class F: def __new__(cls): raise Exception("Unable to create an instance of abstract class %s" %cls) แต่ตอนนี้ถ้าฉันสร้างคลาสGที่สืบทอดมาจากสิ่งที่Fชอบ: class G(F): pass ถ้าอย่างนั้นฉันก็ไม่สามารถสร้างอินสแตนซ์Gได้เนื่องจากมันเรียก__new__วิธีการของซูเปอร์คลาส มีวิธีที่ดีกว่าในการกำหนดคลาสนามธรรม?

5
รวมคลาสอื่นใน SCSS
ฉันมีสิ่งนี้ในไฟล์ SCSS ของฉัน: .class-a{ display: inline-block; //some other properties &:hover{ color: darken(#FFFFFF, 10%); } } .class-b{ //Inherite class-a here //some properties } ในชั้น B, ผมอยากจะ inherite class-aคุณสมบัติและการประกาศที่ซ้อนกันของ สิ่งนี้ทำได้อย่างไร ฉันพยายามใช้@include class-aแต่นั่นก็แค่เกิดข้อผิดพลาดเมื่อรวบรวม
309 inheritance  sass 

7
เทคนิค JSP เพื่อให้การสร้างเทมเพลตง่ายขึ้น?
ที่ทำงานฉันได้รับมอบหมายให้เปลี่ยนHTMLไฟล์เป็นJSPโครงการง่าย ๆ ทุกอย่างมันคงที่ไม่มีตรรกะของเซิร์ฟเวอร์ในการเขียนโปรแกรม ฉันควรพูดถึงว่าฉันใหม่กับ Java อย่างสมบูรณ์ ไฟล์ JSP ดูเหมือนจะทำให้ง่ายต่อการทำงานกับการรวมทั่วไปและตัวแปรเหมือนPHPกัน แต่ฉันต้องการทราบวิธีง่ายๆในการรับสิ่งที่เป็นเทมเพลตการสืบทอด ( Djangoสไตล์) หรืออย่างน้อยสามารถมีไฟล์ base.jsp ที่มี ส่วนหัวและส่วนท้ายดังนั้นฉันสามารถแทรกเนื้อหาในภายหลัง เบ็นลิงดูเหมือนว่าจะเสนอความหวังในคำตอบของเขาที่นี่: การ ถ่ายทอดเทมเพลต JSP ใครบางคนสามารถอธิบายได้ว่าจะบรรลุสิ่งนี้ได้อย่างไร เนื่องจากฉันมีเวลาไม่มากที่ฉันคิดว่าการกำหนดเส้นทางแบบไดนามิกมีน้อยมากฉันจึงดีใจที่ได้มีการจับคู่ URL เข้ากับ.jspไฟล์โดยตรงแต่ฉันเปิดรับข้อเสนอแนะ ขอบคุณ แก้ไข:ฉันไม่ต้องการใช้ห้องสมุดภายนอกเพราะจะเพิ่มช่วงการเรียนรู้สำหรับตัวฉันและคนอื่น ๆ ที่ทำงานในโครงการและ บริษัท ที่ฉันทำงานให้ได้รับสัญญาให้ทำเช่นนี้ การแก้ไขอื่น:ฉันไม่แน่ใจว่าJSP tagsจะมีประโยชน์หรือไม่เพราะเนื้อหาของฉันไม่มีตัวแปรแม่แบบใด ๆ สิ่งที่ฉันต้องการคือวิธีที่จะทำสิ่งนี้: base.html: <html><body> { content.body } </body></html> somepage.html <wrapper:base.html> <h1>Welcome</h1> </wrapper> กับการส่งออกเป็น: <html><body> <h1>Welcome</h1> </body></html> ฉันคิดว่านี่จะทำให้ฉันมีความสามารถในการทำสิ่งต่างๆที่ฉันต้องการ มันสามารถทำได้ด้วยincludesแต่แล้วฉันจะต้องรวมถึงด้านบนและด้านล่างสำหรับแต่ละเสื้อคลุมซึ่งเป็นชนิดของยุ่ง

13
ทำไมจึงต้องตั้งค่าตัวสร้างต้นแบบ?
ในส่วนเกี่ยวกับการสืบทอดในบทความ MDN บทนำสู่จาวาสคริปต์เชิงวัตถุฉันสังเกตเห็นว่าพวกเขาตั้งต้นแบบ // correct the constructor pointer because it points to Person Student.prototype.constructor = Student; สิ่งนี้มีจุดประสงค์สำคัญหรือไม่? มันไม่เป็นไรที่จะละเว้นหรือไม่

8
วิธีกำหนดคลาสยกเว้นที่กำหนดเองใน Java วิธีที่ง่ายที่สุด?
ฉันกำลังพยายามกำหนดคลาสข้อยกเว้นของตัวเองด้วยวิธีที่ง่ายที่สุดและนี่คือสิ่งที่ฉันได้รับ: public class MyException extends Exception {} public class Foo { public bar() throws MyException { throw new MyException("try again please"); } } นี่คือสิ่งที่คอมไพเลอร์ Java พูดว่า: cannot find symbol: constructor MyException(java.lang.String) ฉันรู้สึกว่าคอนสตรัคนี้ต้องได้รับการสืบทอดมาจากjava.lang.Exceptionมันใช่ไหม?

5
ประโยชน์ที่ได้รับจากการถ่ายทอดมรดกต้นแบบในยุคคลาสสิค?
ในที่สุดฉันก็หยุดลากเท้าของฉันตลอดหลายปีที่ผ่านมาและตัดสินใจที่จะเรียนรู้ JavaScript "ถูกต้อง" หนึ่งในองค์ประกอบที่สำคัญที่สุดของการออกแบบภาษาคือการใช้งานการสืบทอด มีประสบการณ์ในทับทิมฉันมีความสุขจริง ๆ ที่ได้เห็นการปิดและพิมพ์แบบไดนามิก แต่สำหรับชีวิตของฉันไม่สามารถคิดได้ว่าจะได้ประโยชน์อะไรจากอินสแตนซ์ของวัตถุโดยใช้อินสแตนซ์อื่นสำหรับการสืบทอด

7
หมายความว่า Javascript เป็นภาษาต้นแบบหรือไม่
หนึ่งในข้อดีที่สำคัญของ Javascript นั้นได้รับการกล่าวขานว่าเป็นภาษาที่ใช้ต้นแบบ แต่มันหมายความว่าอะไรที่ Javascript ใช้ต้นแบบและทำไมมันถึงได้เปรียบ?

4
การเรียกเมธอดดีฟอลต์อย่างชัดเจนใน Java
Java 8 แนะนำวิธีการเริ่มต้นเพื่อให้ความสามารถในการขยายส่วนต่อประสานโดยไม่จำเป็นต้องแก้ไขการใช้งานที่มีอยู่ ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะเรียกใช้การเริ่มต้นของวิธีการอย่างชัดเจนเมื่อวิธีการนั้นถูกเขียนทับหรือไม่พร้อมใช้งานเนื่องจากการใช้งานเริ่มต้นที่ขัดแย้งกันในอินเตอร์เฟสที่ต่างกัน interface A { default void foo() { System.out.println("A.foo"); } } class B implements A { @Override public void foo() { System.out.println("B.foo"); } public void afoo() { // how to invoke A.foo() here? } } เมื่อพิจารณาจากโค้ดด้านบนคุณจะโทรA.foo()จากวิธีการของคลาส B ได้อย่างไร

17
คลาสย่อยสืบทอดฟิลด์ส่วนบุคคลหรือไม่
นี่คือคำถามสัมภาษณ์ คลาสย่อยสืบทอดฟิลด์ส่วนบุคคลหรือไม่ ฉันตอบว่า "ไม่" เพราะเราไม่สามารถเข้าถึงได้โดยใช้ "วิธี OOP ปกติ" แต่ผู้สัมภาษณ์คิดว่าพวกเขาได้รับมรดกเพราะเราสามารถเข้าถึงสาขาดังกล่าวทางอ้อมหรือใช้การสะท้อนและพวกเขายังคงอยู่ในวัตถุ หลังจากฉันกลับมาฉันพบข้อความอ้างอิงต่อไปนี้ในjavadoc : สมาชิกส่วนตัวใน Superclass คลาสย่อยไม่สืบทอดสมาชิกส่วนตัวของคลาสพาเรนต์ คุณรู้ข้อโต้แย้งใด ๆ สำหรับความคิดเห็นของผู้สัมภาษณ์หรือไม่?
245 java  oop  inheritance  private 

8
คุณจะแสดงการสืบทอดในฐานข้อมูลได้อย่างไร
ฉันคิดเกี่ยวกับวิธีแสดงโครงสร้างที่ซับซ้อนในฐานข้อมูล SQL Server พิจารณาแอปพลิเคชั่นที่ต้องการจัดเก็บรายละเอียดของตระกูลวัตถุที่แชร์คุณสมบัติบางอย่าง แต่มีหลายโปรแกรมที่ไม่เหมือนกัน ตัวอย่างเช่นแพคเกจประกันภัยเชิงพาณิชย์อาจรวมถึงความรับผิด, มอเตอร์, ทรัพย์สินและความคุ้มครองครอบคลุมภายในบันทึกนโยบายเดียวกัน มันเป็นเรื่องเล็กน้อยที่จะนำสิ่งนี้ไปใช้ใน C # และอื่น ๆ เนื่องจากคุณสามารถสร้างนโยบายที่มีการรวบรวมส่วนต่างๆโดยที่ส่วนจะได้รับการถ่ายทอดตามความจำเป็นสำหรับความคุ้มครองประเภทต่างๆ อย่างไรก็ตามฐานข้อมูลเชิงสัมพันธ์ดูเหมือนจะไม่อนุญาตสิ่งนี้ได้อย่างง่ายดาย ฉันเห็นว่ามีสองตัวเลือกหลัก: สร้างตารางนโยบายจากนั้นตารางส่วนที่มีฟิลด์ทั้งหมดที่จำเป็นสำหรับรูปแบบที่เป็นไปได้ทั้งหมดซึ่งส่วนใหญ่จะเป็นโมฆะ สร้างตารางนโยบายและตารางส่วนต่างๆจำนวนมากหนึ่งตารางสำหรับความคุ้มครองแต่ละประเภท ตัวเลือกทั้งสองนี้ดูเหมือนจะไม่เป็นที่น่าพอใจโดยเฉพาะอย่างยิ่งเมื่อจำเป็นต้องเขียนข้อความค้นหาในทุกส่วนซึ่งจะเกี่ยวข้องกับการรวมจำนวนมากหรือการตรวจสอบโมฆะจำนวนมาก แนวปฏิบัติที่ดีที่สุดสำหรับสถานการณ์นี้คืออะไร

8
เหตุใดจึงไม่สามารถขยายคำอธิบายประกอบใน Java ได้
ฉันไม่เข้าใจว่าทำไมไม่มีการสืบทอดในหมายเหตุประกอบ Java เช่นเดียวกับคลาส Java ฉันคิดว่ามันจะมีประโยชน์มาก ตัวอย่างเช่น: ฉันต้องการทราบว่าคำอธิบายประกอบที่กำหนดเป็นตัวตรวจสอบความถูกต้องหรือไม่ ด้วยการสืบทอดฉันสามารถย้อนกลับไปที่ซูเปอร์คลาสเพื่อทราบว่าการเพิ่มความคิดเห็นนี้ขยายไปValidatorAnnotationหรือไม่ มิฉะนั้นฉันจะทำสิ่งนี้ได้อย่างไร ดังนั้นใครสามารถให้เหตุผลฉันสำหรับการตัดสินใจออกแบบนี้ได้หรือไม่?

5
คำหลัก 'แทนที่' เป็นเพียงการตรวจสอบวิธีเสมือนจริงที่ถูกแทนที่หรือไม่
เท่าที่ฉันเข้าใจการแนะนำของoverrideคำหลักใน C ++ 11 ไม่มีอะไรมากไปกว่าการตรวจสอบเพื่อให้แน่ใจว่าฟังก์ชั่นการใช้งานเป็นการนำoverrideของvirtualฟังก์ชั่นในชั้นฐาน มันคืออะไร

12
เหตุใดฉันจึงไม่สามารถรับคลาสแบบสแตติกได้
ฉันมีหลายคลาสที่ไม่ต้องการสถานะใด ๆ จากมุมมองขององค์กรฉันต้องการที่จะนำพวกเขาลงในลำดับชั้น แต่ดูเหมือนว่าฉันไม่สามารถประกาศการสืบทอดสำหรับคลาสสแตติก อะไรแบบนั้น: public static class Base { } public static class Inherited : Base { } จะไม่ทำงาน. ทำไมนักออกแบบของภาษาจึงปิดโอกาสนั้น
224 c#  inheritance  static 

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