переопределение и перегрузка java



Автор Маришка александрова задал вопрос в разделе Другие языки и технологии

Подскажите про перегрузку/переопределение C# и получил лучший ответ

Ответ от Scorpio[гуру]
Переопределение - это когда в производном классе есть метод с точно такой же сигнатурой как и базовом классе. Т. е. он скрывает метод базового класса, и должен помечаться ключевым словом new.
class A {
public int zz(string a) { return 1; }
}
class B : A {
public new int zz(string a) { return 2; }
}
Перегрузка - это когда в одном классе есть несколько методов с одинаковыми именами, но разными параметрами. Возвращаемый тип при этом не учитывается.
class A {
public int zz(string a) { return 1; }
public int zz(float a) { return 2; }
public int zz(bool a) { return 3; }
}

Ответ от Ra[гуру]
В данном случае перезагрузка, т. к. у тебя в классе B появилась возможность использовать метод с аргументами разных типов (старый метод вызываемый со строкой унаследовался от класса A, а перезагруженный ты определила в B).
var b = new B();
b.zz("string");
b.zz(0.123);
Так будет и то и другое:
class B : A
{
public int zz(string a) // здесь метод переопределяется, типы аргументов и возвращаемого значения не поменялись
{
return 2;
}
public int zz(float a) // здесь перегружается
{
return 1;
}
}

Ответ от Николай Веселуха[гуру]
using System;
namespace example
{
    class A
    {
        public virtual int zz(string a)
        {
            return 1;
        }
        public virtual int zz(double a)
        {
            return 11;
        }
    }
    class B : A
    {
        public override int zz(string a)
        {
            return 2;
        }
        public override sealed int zz(double a)
        {
            return 22;
        }
    }
    class Program : B
    {
        public static void Main(string[] args)
        {
            A a = new A();
            B b = new B();
            Console.WriteLine(a.zz("test"));
            Console.WriteLine(b.zz("test"));
            Console.WriteLine(a.zz(22.5));
            Console.WriteLine(b.zz(22.5));
            Console.WriteLine();
            Console.ReadKey();
        }
    }
}
В базовом классе А два метода zz(), которые перегружены, у них разная сигнатура.
В производном от А классе В имеются те же методы, которые переопределены.
В производном от В классе Program демонстрируется вызов этих методов через объекты с различными параметрами.
virtual - позволение переопределять метод в производном классе
override - говорит о переопределении метода базового класса
sealed - запрещает дальнейшее переопределение этого метода во всех производных от B классах

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Подскажите про перегрузку/переопределение C#
Переопределение метода на Википедии
Посмотрите статью на википедии про Переопределение метода
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*