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

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

17
การลบล้างและการซ่อน Java - สับสน
ฉันสับสนว่าการลบล้างแตกต่างจากการซ่อนใน Java อย่างไร ใครช่วยให้รายละเอียดเพิ่มเติมว่าสิ่งเหล่านี้แตกต่างกันอย่างไร ฉันอ่านJava Tutorialแต่โค้ดตัวอย่างยังทำให้ฉันสับสน เพื่อให้ชัดเจนยิ่งขึ้นฉันเข้าใจการลบล้างได้ดี ปัญหาของฉันคือฉันไม่เห็นว่าการซ่อนแตกต่างกันอย่างไรยกเว้นความจริงที่ว่าหนึ่งอยู่ในระดับอินสแตนซ์ในขณะที่อีกอันอยู่ในระดับชั้นเรียน ดูโค้ดสอน Java: public class Animal { public static void testClassMethod() { System.out.println("Class" + " method in Animal."); } public void testInstanceMethod() { System.out.println("Instance " + " method in Animal."); } } จากนั้นเรามีคลาสย่อยCat: public class Cat extends Animal { public static void testClassMethod() …


8
วิธีบังคับให้คลาสที่ได้รับเรียก super method? (เช่นเดียวกับ Android)
ฉันสงสัยว่าเมื่อสร้างActivityคลาสใหม่แล้วแทนที่onCreate()เมธอดในคราสฉันมักจะได้รับการเพิ่มอัตโนมัติ: super.onCreate(). สิ่งนี้เกิดขึ้นได้อย่างไร? มีคีย์เวิร์ด java ใน abstract หรือ parent class ที่บังคับสิ่งนี้หรือไม่? ฉันไม่รู้ว่ามันผิดกฎหมายหรือไม่ที่จะไม่เรียกซุปเปอร์คลาส แต่ฉันจำได้ว่าในบางวิธีฉันได้รับข้อยกเว้นที่ไม่ทำ สิ่งนี้มีอยู่ใน java ด้วยหรือไม่? คุณสามารถใช้คำหลักเพื่อทำสิ่งนั้นได้หรือไม่ หรือทำอย่างไร?

3
รับฟังก์ชั่นแทนที่ของคลาสย่อย
มีวิธีรับฟังก์ชั่น overriden ทั้งหมดของคลาสย่อยใน Python หรือไม่? ตัวอย่าง: class A: def a1(self): pass def a2(self): pass class B(A): def a2(self): pass def b1(self): pass นี่ฉันต้องการจะได้รับรายการ["a2"]สำหรับวัตถุของคลาสB(หรือสำหรับวัตถุชั้นเอง) ตั้งแต่ระดับแทนที่เพียงวิธีการเดียวคือBa2

2
การกำหนดค่าเริ่มต้นตัวแปร Kotlin สำหรับคลาสลูกทำงานแปลกสำหรับการเริ่มต้นตัวแปรด้วยค่า 0
ฉันได้สร้างลำดับชั้นของคลาสต่อไปนี้: open class A { init { f() } open fun f() { println("In A f") } } class B : A() { var x: Int = 33 init { println("x: " + x) } override fun f() { x = 1 println("x in f: "+ x) } init { …

2
ทำไมเมธอดที่ส่งคืนยูนิตสามารถถูกแทนที่ด้วยเมธอดที่ส่งคืนสตริงเมื่อชนิดการส่งคืนไม่ได้รับอย่างชัดเจน?
ฉันกำลังทำงานผ่านตัวอย่างโค้ดจากบทเกี่ยวกับลักษณะในการเขียนโปรแกรมใน Scala Edition1 https://www.artima.com/pins1ed/traits.html และเจอพฤติกรรมแปลก ๆ เพราะพิมพ์ผิดของฉัน ในขณะที่วิธีการลักษณะดังต่อไปนี้รหัสข้อมูลเท่านั้นเอาชนะไม่ได้ให้รวบรวมข้อผิดพลาดใด ๆ แม้ว่าประเภทการกลับมาของวิธีการที่แตกต่างกันแทนที่เป็นVSUnit Stringแต่เมื่อเรียกวิธีการบนวัตถุมันจะส่งคืนหน่วย แต่ไม่ได้พิมพ์อะไร trait Philosophical { def philosophize = println("I consume memory, therefore I am!") } class Frog extends Philosophical { override def toString = "green" override def philosophize = "It aint easy to be " + toString + "!" } …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.