2
A
回答
16
“多态”意思是“多种形状”。在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; }
}
现在考虑一个例子
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());
s[0].area()
电话Circle.area()
,s[1].area()
电话Square.area()
- 因此,我们说,Shape
及其子类利用该方法调用的多态性区。
5
查理的答案用简单的术语解释了多态性是什么。
从那里继续,这将是一个“多态的方法”:
public void Shape CreateShape() {
return new Circle(10);
}
这是在这个意义上“多态”,其签名说你是得到一个Shape
,但你是什么真正越来越是Shape
的一个子类。既然你不知道你得到了什么(可能是Circle
,Square
等),你必须使用超类的接口(即多态性)来处理它。
我应该提一下(可能是因为我对Java只有轻微的经验)“多态方法”是一个陌生的术语,所以它可能被用来表示别的东西。这只是我的解释。
0
多态性是一种表示“多种形式中的一种形式”的过程。
这不是一个编程概念,但它是原则之一。
Example 1 :
class A
{
void print(double d)
{
System.out.println("Inside Double");
}
void print(float f)
{
System.out.println("Inside Float");
}
}
class B
{
public static void main(String [ ] args)
{
A obj1 = new A();
obj1.print(10.0);
}
}
Output :
//save as : B.java
//compile as :javac B.java
//run as : java B
Inside Double
______________________
Example 2 :
class A
{
void print(double d)
{
System.out.println("Inside Double");
}
void print(float f)
{
System.out.println("Inside Float");
}
}
class B
{
public static void main(String [ ] args)
{
A obj1 = new A();
obj1.print(10.0f);
}
}
Output :
//save as : B.java
//compile as :javac B.java
//run as : java B
Inside Float
_______________________
Example 3 :
class A
{
void print(double d)
{
System.out.println("Inside Double");
}
void print(float f)
{
System.out.println("Inside Float");
}
}
class B
{
public static void main(String [ ] args)
{
A obj1 = new A();
obj1.print(10);
}
}
Output :
//save as : B.java
//compile as :javac B.java
//run as : java B
Inside Float
0
的方法是多态的签名,如果所有以下为真:
它是在java.lang.invoke.MethodHandle类中声明。
它有一个Object []类型的单一形式参数。
它有一个返回类型的Object。
它设置了ACC_VARARGS和ACC_NATIVE标志。
在Java SE 8中,唯一的签名多态方法是类java.lang.invoke.MethodHandle的invoke和invokeExact方法。
0
相关问题
- 1. 什么是C#中的“静态方法”?
- 2. Ruby中的Java静态方法是什么样的?
- 3. 什么是Java中的便捷方法?
- 4. 什么是“本”中的Java方法
- 5. 为什么递归方法通常在Java中是静态的?
- 6. 什么是在C++中实现多态的不同方法
- 7. Java多态方法
- 8. 为什么Java字段不是多态?
- 9. 在java中动态绑定方法 - 为什么这个方法?
- 10. request.referer方法的状态是什么?
- 11. 动态创建对象的正确Java方法是什么?
- 12. 什么是从Java中的静态方法调用非静态方法的最佳方式?
- 13. 非静态类中静态方法的要点是什么?
- 14. 什么是java中的静态接口?
- 15. 为什么getAppProperty()不是静态方法?
- 16. 什么是静态方法同步吗?
- 17. 什么是静态方法和变量?
- 18. 为什么不是每种方法都是静态方法?
- 19. 一般是什么放在主要方法,什么不是? - java
- 20. 什么是Lotus Notes Java API中的getFileFormat()方法,它返回的值是什么?
- 21. 为什么说方法不是静态时它是静态的?
- 22. Java:什么是静态{}?
- 23. Java中printStackTrace()方法的用法是什么?
- 24. java中equals方法的正确用法是什么?
- 25. Java中扩展方法的实际用法是什么?
- 26. 从C++调用Java方法的最简单方法是什么?
- 27. 什么是当多个方法是从方法
- 28. 在java webapp中动态加载类的最佳方法是什么?
- 29. java中允许声明静态方法这样做的好处是什么
- 30. 在Java中初始化复杂静态成员的最佳方法是什么?
你有这个术语的麻烦(即会意译帮助)?或者你有没有多态的概念? – delnan 2011-01-05 15:19:45
首先你明白多态吗? – jzd 2011-01-05 15:20:20
[Sunoracle教程的多态性的Java(http://download.oracle.com/javase/tutorial/java/IandI/polymorphism.html) – birryree 2011-01-05 15:22:50