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. request.referer方法的狀態是什麼?
- 7. 動態創建對象的正確Java方法是什麼?
- 8. 什麼是從Java中的靜態方法調用非靜態方法的最佳方式?
- 9. 非靜態類中靜態方法的要點是什麼?
- 10. 爲什麼getAppProperty()不是靜態方法?
- 11. 什麼是靜態方法同步嗎?
- 12. Java:什麼是靜態{}?
- 13. Java中printStackTrace()方法的用法是什麼?
- 14. java中equals方法的正確用法是什麼?
- 15. 從C++調用Java方法的最簡單方法是什麼?
- 16. 在Java中初始化複雜靜態成員的最佳方法是什麼?
- 17. 在Java中訪問靜態字段的正確方法是什麼?
- 18. java中允許聲明靜態方法這樣做的好處是什麼
- 19. 什麼是多態性?
- 20. Java中靜態字段的用法是什麼?
- 21. 什麼是Java字符串compareTo方法和什麼是Java字典序
- 22. 瘦身多種類似方法的合適方法是什麼?
- 23. JSP中的動態字段:最好的方法是什麼?
- 24. 什麼是測試依賴於靜態方法的方法的方法?
- 25. 什麼是動態方法,DynamicMethod與MethodBuilder有什麼不同?
- 26. Java中的範圍,最好的方法是什麼?
- 27. Java中var-args的用法是什麼?
- 28. java中的這個語法是什麼?
- 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