如何理解java中的继承与多态?实例介绍java多态与继承。 java的子类只能继承一个父类,子类拥有父类全部的方法以及属性。父类中被private修饰的方法与属性,无法被子类访问。继承目的是为了让程序更有扩展性,子类拥有的方法与属性比父类多。
java多态实现的三个基础:一、必须有继承。二、子类重写父类方法。三、父类引用子类对象。
如下代码示例。第四个的运行结果,a2是父类对子类对象的引用,只能调用父类的所有方法与子类重写父类的方法。因此调用类B的public String show(A obj)方法,无法调用public String show(B obj)方法。C、D分别都继承B,B继承A,因此C、D也拥有A和B的方法。第六个运行结果,C继承B,因此调用了B的public String show(B obj)方法。
public class DT {
public static void main(String[] args) {
A a1 = new A();
A a2 = new B();
B b = new B();
C c = new C();
D d = new D();
System.out.println(a1.show(b)); //1.A and A
System.out.println(a1.show(c)); //2.A and A
System.out.println(a1.show(d)); //3.A and D
System.out.println(a2.show(b)); //4.B and A!
//必须强制转换a2的类型为B,才可以调用子类新添加的父类没有的方法。
System.out.println(a2.show (c)); //5.B and A
System.out.println(a2.show(d)); //6.A and D
System.out.println(b.show(b)); //7.B and B
System.out.println(b.show(c)); //8.B and B
System.out.println(b.show(d)); //9.A and D
}
}
class A {
public String show(D obj) {
return (“A and D”);
}
public String show(A obj) {
return(“A and A”);
}
}
class B extends A {
public String show(B obj) {
return(“B and B”);
}
public String show(A obj) {
return(“B and A”); //重写父类方法
}
}
class C extends B {
}
class D extends B {
}