面试题答案
一键面试1. 重载(Overloading)
- 概念:在同一个类中,允许存在多个同名方法,但这些方法的参数列表(参数个数、类型或顺序)必须不同。通过这种方式实现了在同一类中对不同输入的多种处理方式,这就是一种多态的体现。
- 代码示例:
Public Class MathOperations
Public Function Add(ByVal num1 As Integer, ByVal num2 As Integer) As Integer
Return num1 + num2
End Function
Public Function Add(ByVal num1 As Double, ByVal num2 As Double) As Double
Return num1 + num2
End Function
Public Function Add(ByVal num1 As Integer, ByVal num2 As Integer, ByVal num3 As Integer) As Integer
Return num1 + num2 + num3
End Function
End Class
- 应用场景:比如在数学计算类中,可能需要对不同类型(整数、浮点数等)或者不同数量的参数进行加法运算,使用方法重载可以方便地实现这一需求,提高代码的灵活性和复用性。用户可以根据实际传入的参数类型和数量,调用合适的
Add
方法,而不需要为不同类型和数量的加法操作创建不同的方法名。
2. 重写(Overriding)
- 概念:当一个子类继承自父类时,子类可以对父类中定义的虚方法(用
Overridable
关键字声明)进行重新定义,使用Overrides
关键字。这使得子类对象在调用该方法时,执行的是子类中重写后的逻辑,而不是父类的逻辑,从而实现多态。 - 代码示例:
Public MustInherit Class Animal
Public Overridable Sub MakeSound()
Console.WriteLine("The animal makes a sound.")
End Sub
End Class
Public Class Dog
Inherits Animal
Public Overrides Sub MakeSound()
Console.WriteLine("The dog barks.")
End Sub
End Class
Public Class Cat
Inherits Animal
Public Overrides Sub MakeSound()
Console.WriteLine("The cat meows.")
End Sub
End Class
在使用时:
Module Program
Sub Main()
Dim myDog As New Dog()
Dim myCat As New Cat()
Dim myAnimal1 As Animal = myDog
Dim myAnimal2 As Animal = myCat
myAnimal1.MakeSound()
myAnimal2.MakeSound()
End Sub
End Module
- 应用场景:在一个动物类继承体系中,不同的动物有不同的叫声。通过在父类
Animal
中定义虚方法MakeSound
,子类Dog
和Cat
重写该方法来实现各自独特的叫声逻辑。这样,当使用父类类型的变量来引用不同子类对象时,调用MakeSound
方法会根据实际对象的类型(即运行时类型)执行相应子类的方法,体现了多态性。这在处理具有共同行为但具体实现不同的对象集合时非常有用,例如管理一个包含多种动物对象的列表,统一调用MakeSound
方法就能得到每个动物对应的叫声。