更新時(shí)間:2022-03-22 09:17:47 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1874次
多態(tài)性一詞意味著具有多種形式。簡(jiǎn)單來說,我們可以將多態(tài)性定義為消息以多種形式顯示的能力。
一個(gè)人同時(shí)可以有不同的特征。就像一個(gè)男人同時(shí)是父親、丈夫、雇員。因此,同一個(gè)人在不同的情況下具有不同的行為。這稱為多態(tài)性。
方法重載:當(dāng)有多個(gè)同名但參數(shù)不同的函數(shù)時(shí),這些函數(shù)稱為重載。函數(shù)可以通過更改參數(shù)數(shù)量或/和更改參數(shù)類型來重載。
示例 1
// Java Program for Method overloading
// By using Different Types of Arguments
// Class 1
// Helper class
class Helper {
// Method with 2 integer parameters
static int Multiply(int a, int b)
{
// Returns product of integer numbers
return a * b;
}
// Method 2
// With same name but with 2 double parameters
static double Multiply(double a, double b)
{
// Returns product of double numbers
return a * b;
}
}
// Class 2
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Calling method by passing
// input as in arguments
System.out.println(Helper.Multiply(2, 4));
System.out.println(Helper.Multiply(5.5, 6.3));
}
}
輸出:
8
34.65
示例 2
// Java program for Method Overloading
// by Using Different Numbers of Arguments
// Class 1
// Helper class
class Helper {
// Method 1
// Multiplication of 2 numbers
static int Multiply(int a, int b)
{
// Return product
return a * b;
}
// Method 2
// // Multiplication of 3 numbers
static int Multiply(int a, int b, int c)
{
// Return product
return a * b * c;
}
}
// Class 2
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Calling method by passing
// input as in arguments
System.out.println(Helper.Multiply(2, 4));
System.out.println(Helper.Multiply(2, 7, 3));
}
}
輸出:
8
42
類型 2:運(yùn)行時(shí)多態(tài)性
它也被稱為動(dòng)態(tài)方法調(diào)度。這是一個(gè)在運(yùn)行時(shí)解析對(duì)被覆蓋方法的函數(shù)調(diào)用的過程。這種類型的多態(tài)性是通過方法覆蓋來實(shí)現(xiàn)的。 另一方面,當(dāng)派生類具有基類的一個(gè)成員函數(shù)的定義時(shí),就會(huì)發(fā)生方法覆蓋。據(jù)說該基本功能已被覆蓋。
例子
// Java Program for Method Overriding
// Class 1
// Helper class
class Parent {
// Method of parent class
void Print()
{
// Print statement
System.out.println("parent class");
}
}
// Class 2
// Helper class
class subclass1 extends Parent {
// Method
void Print() { System.out.println("subclass1"); }
}
// Class 3
// Helper class
class subclass2 extends Parent {
// Method
void Print()
{
// Print statement
System.out.println("subclass2");
}
}
// Class 4
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating object of class 1
Parent a;
// Now we will be calling print methods
// inside main() method
a = new subclass1();
a.Print();
a = new subclass2();
a.Print();
}
}
輸出:
子類1
子類2
輸出說明:
在這個(gè)程序中,當(dāng)一個(gè)子類的對(duì)象被創(chuàng)建時(shí),子類內(nèi)部的方法就會(huì)被調(diào)用。這是因?yàn)楦割愔械姆椒ū蛔宇惛采w了。由于該方法被重寫,因此該方法在子類中比父方法具有更高的優(yōu)先級(jí)。因此,子類中的主體被執(zhí)行。
通過上述介紹大家對(duì)Java多態(tài)的概念已經(jīng)有所了解,當(dāng)然,Java多態(tài)的存在也是有條件的,感興趣的小伙伴可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的java多態(tài)的三個(gè)條件分別是什么,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)