у меня есть этот пример:
class One
{
public void testOne(){System.out.println("One!!!");}
public void testTwo(){System.out.println("One!!!");}
}
public class Jenia extends One
{
static void test(One o) {o.testOne(); o.testTwo();}
public static void main(String args[])
{
test(new One());
}
}
Результаты:
One!!!
One!!!
хорошо, без вопросов.
чем, я пытаюсь изменить мой код:
только этот метод:
public static void main(String args[])
{
test(new Jenia());
}
результаты:
One!!!
One!!!
хорошо, у нас есть этот результат, потому что - здесь апкастинг (Jenia-One).
все тоже хорошо, но снова модифицировано:
в class Jenia override method
testOne`:
public void testOne(){System.out.println("Two!!!");}
поэтому у меня есть этот код:
class One
{
public void testOne(){System.out.println("One!!!");}
public void testTwo(){System.out.println("One!!!");}
}
public class Jenia extends One
{
public void testOne(){System.out.println("Two!!!");}
static void test(One o){o.testOne(); o.testTwo();}
public static void main(String args[])
{
test(new Jenia());
}
}
и результаты:
Two!!!
One!!!
мой вопрос: почему двое !!! ?? почему мы не потеряли методы переопределения?