2015-09-08 16 views
1

Возможно ли выполнять перегрузку метода в разных классах.Перегрузка метода в разных классах

class Parent{ 
    // Private method 
    private void method1(){ 
     System.out.println("In private method of Parent class"); 
    } 
    void method2(){ 
    } 
    void method3(){ 
    } 
} 

class Child extends Parent{ 
    void method3(int i){ 
    } 
} 

Для выполнения перегрузки необходимо иметь два метода одинакового имени и с разной подписью в классе. но в наследовании, как это работает. В наследовании верно ли, что копия не частного метода создается в дочернем классе? В этом примере выполняется перегрузка или нет?

+0

Нет, для перегрузки метода вы должны иметь такую ​​же подпись метода. – drgPP

+2

Нет, перегрузка происходит в одном классе. @drgPP, вы говорите об переопределении –

+0

@LaurentiuL. о да, вы правы, я смутил условия. – drgPP

ответ

3

Overloading означает методы с таким же именем, но различными сигнатурами, но не переопределить эквивалент для конкретногоclass. Это предмет класса и не связан с его родителем или ребенок. Более того, если у родителя есть перегруженные методы, чем у ребенка, это может иметь или не иметь такого же поведения. Более того, если какой-либо interface содержит перегруженные подписи, ваш класс в конечном итоге имеет перегруженные методы.

Обратите внимание, что вы не перегрузили method3(int i) с method() родителей, еще больше метода Child не связан с методом его родителя в вашем случае. Вы можете переопределить только non-private и non-static методы родительского контроля, но вы не можете их перегрузить, нет значения перегрузки.

0

Переопределение - переопределение методов в подклассах с тревожным из подписи. Это также называется динамическим связыванием, которое будет определено во время Runtime на основе передаваемого объекта.

Перегрузки - переопределение методы с в том же классе путем изменения сигнатуры методов. Это также называется Static Binding, которое будет определено во время компиляции.

Здесь, в вашем конкретном примере, мы НЕ ДОЛЖНЫ указывать, что метод3() перегружен, так как мы не переопределили метод method3() более одного раза в одном классе.

Смежные вопросы