Jos*_*eph 6 java polymorphism terminology
我正在研究用于SCJP测试的java语言.
理解"多态方法"有点难.
你能帮我解释一下吗?或者给我一些链接?
Cha*_*tin 19
"多态"意味着"许多形状".在Java中,您可以使用具有相同名称的具有不同内容的子类的超类.传统的例子是超类Shape,子类与Circle,Square,和Rectangle,和方法area().
所以,例如
// note code is abbreviated, this is just for explanation
class Shape {
public int area(); // no implementation, this is abstract
}
class Circle {
private int radius;
public Circle(int r){ radius = r ; }
public int area(){ return Math.PI*radius*radius ; }
}
class Square {
private int wid;
Public Square(int w){ wid=w; }
public int area() { return wid*wid; }
}
Run Code Online (Sandbox Code Playgroud)
现在考虑一个例子
Shape s[] = new Shape[2];
s[0] = new Circle(10);
s[1] = new Square(10);
System.out.println("Area of s[0] "+s[0].area());
System.out.println("Area of s[1] "+s[1].area());
Run Code Online (Sandbox Code Playgroud)
s[0].area()调用Circle.area(),s[1].area()调用Square.area()- 因此我们说它Shape及其子类利用对方法区域的多态调用.
查理的答案简单地解释了多态性是什么.
从那里继续,这将是一个"多态方法":
public void Shape CreateShape() {
return new Circle(10);
}
Run Code Online (Sandbox Code Playgroud)
它的"多态性"在某种意义上说它的签名表明你得到了一个Shape,但你真正得到的是它的一个子类Shape.既然你不确切知道你得到了什么(可能是a Circle,a Square等),你必须使用超类的接口(即多态)来处理它.
我应该提一下(可能是因为我只对Java有一些经验)"多态方法"是一个不熟悉的术语,所以它可能被用来表示其他东西.这只是我的解释.