以下のコードでは、メソッドclass B
がオーバーロードされていると言えますか?add
class A
{
public void add()
{
//some code
}
}
class B extends A
{
public void add(int a)
{
// some code
}
}
以下のコードでは、メソッドclass B
がオーバーロードされていると言えますか?add
class A
{
public void add()
{
//some code
}
}
class B extends A
{
public void add(int a)
{
// some code
}
}
うなずく
はい、それはメソッドのオーバーロードの例です。メソッドオーバーライドの例は、
class B extends A{
@Override
public void add(){
// do stuff
}
}
によって公開される API の観点からは、スーパークラスによって提供される場合でもB
、add
メソッドは既に存在します。add
異なる引数を持つ別のメソッドを提供するため、これはオーバーロードです。同じ署名を提供したことは、オーバーライドされていたでしょう。
はい、これはメソッドのオーバーロードです。
B
はい、クラスがメソッドをオーバーロードしたと言えますadd()
。public void add()
継承のため、クラスBにすでに存在します。同じ名前で、異なるシグニチャ(つまり、パラメータの数、タイプ、および順序)でメソッドを作成すると、オーバーロードになります。
はい。次のオーバーロードのより簡単な例を考えてみましょう。
class A
{
public void add()
{
//some code
}
public void add(int a)
{
//this method is overloading add() from within its own class
}
}
ここで、B はコード例で A を拡張するため、add() を継承するため、add() が B で明示的に定義されていなくても、メソッドは使用可能であり、add(int a) を定義すると、 add() のオーバーロードと見なされる