Java中的編譯時多型性


多型性是在Java環境中物件能力的宣告。它允許我們以不同的方式執行相同的過程。Java中存在兩種型別多型性:

  • 編譯時多型性方法

  • 執行時多型性方法

今天,我們將討論如何使用方法過載和運算子過載來實現編譯時多型性。

編譯時多型性示例

這是一個例子:

void ARBRDD() { ... }
void ARBRDD(int num1 ) { ... }
void ARBRDD(float num1) { ... }
void ARBRDD(int num1 , float num2 ) { ... }
show the value of ( char a )
show the value of ( char a ,char b )
show the value of ( float a float b)
show the value of ( int a, int b )
show the value of ( int a, float b )
show the value of ( float a, int b )
int sum value of (int, int);
String sum value of (int, int);

執行編譯時多型性的演算法

在這個可能的演算法中,我們將向您展示如何在Java環境中執行編譯時多型性。透過使用此演算法,我們將構建一些Java語法,以有效的方式解釋該過程。

  • 步驟1 - 開始程序。

  • 步驟2 - 匯入並宣告執行方法所需的Java包。

  • 步驟3 - 宣告一個公共類。

  • 步驟4 - 提及字串引數。

  • 步驟5 - 建立並宣告兩個函式引數。

  • 步驟6 - 定義函式引數一。

  • 步驟7 - 定義函式引數二。

  • 步驟8 - 顯示兩個列表。

  • 步驟9 - 比較兩個列表。

  • 步驟10 - 如果評估結果為真,則列印相等訊息。

  • 步驟11 - 如果評估結果為假,則阻止執行過程並列印不相等文字。

  • 步驟12 - 插入另一個元素並覆蓋方法。

  • 步驟13 - 顯示兩者。

  • 步驟14 - 再次比較兩者。

  • 步驟15 - 獲取結果。

  • 步驟16 - 終止程序。

執行編譯時多型性的語法

class SimpleCalculator{
	int add(int a, int b){
		return a+b;
	}
	int add(int a, int b, int c){
		return a+b+c;
	}
}
public class DemoCal{
	SimpleCalculator obj = new SimpleCalculator();
	System.out.println(obj.add(10, 20));
	System.out.println(obj.add(10, 20, 30));
}
}
class SimpleCalculator{
	int add(int a, int b){
		return a+b;
	}
	int add(int a, int b, int c){
		return a+b+c;
	}
}
public class DemoCal{
	SimpleCalculator obj = new SimpleCalculator();
	System.out.println(obj.add(10, 20));
	System.out.println(obj.add(10, 20, 30));
}
}
class MethodOverloading {
	private static void display(int a){
		System.out.println("Got Int data as a value.");
	}
	private static void display(String a){
		System.out.println("Got String object as a value.");
	}
	public static void main(String[] args) {
		display(4);
		display("XYZ");
	}
}
class Student{
	public void stuIdentity(String name, int id){
		System.out.println("stuName :" + name + " "
		+ "Id :" + id);
	}
	public void stuIdentity(int id, String name){
		System.out.println("Id :" + id + " " + "stuName :" + name);
	}
}
class Main {
	Student stu= new Student();
	stu.stuIdentity("Mohit Roy", 1);
	stu.stuIdentity(2, "Mohini Basu");
}
}

在上面這個可能的語法中,我們試圖向您展示如何構建一個函式以在多型性方法中使用它。透過使用這些Java語法,我們正在朝著一些與編譯時多型性相關的Java方法前進。

遵循的方法

  • 方法1 - Java程式透過更改引數數量來演示方法過載的工作原理,以演示編譯時多型性

  • 方法2 - Java程式使用render()型別方法實現編譯時多型性

方法1:使用引數數量執行編譯時多型性

con_str方法的使用

在這種可能的方法中,我們將應用con_str方法,透過更改引數數量來演示編譯時多型性的工作原理。

String con_str = s1 + s2;
System.out.println("Concatenated strings :"+ con_str);

示例

//Java program to demonstrate the working of method overloading by changing the number of parameters
public class ARBRDD {
   void show(int num1){
      System.out.println("number 1 : " + num1);
   }
   void show(int num1, int num2){
      System.out.println("number 1 : " + num1 + " number 2 : " + num2);
   }
   public static void main(String[] args){
      ARBRDD obj = new ARBRDD();
      obj.show(3);
      obj.show(4, 5);
   }
}

輸出

number 1 : 3
number 1 : 4 number 2 : 5

資料型別方法的使用

在這種可能的方法中,我們將應用資料型別模式方法,透過更改引數數量來演示編譯時多型性的工作原理。

示例

//Java program to demonstrate the working of method overloading by changing the Datatype of parameter
public class ARBRDD {
   static void show(int a, int b){
      System.out.println("This is the integer function here");
   }
   static void show(double a, double b){
      System.out.println("This is the double function here");
   }
   public static void main(String[] args){
      show(1, 2);
      show(1.2, 2.4);
   }
}

輸出

This is the integer function here
This is the double function here

序列引數方法的使用

在這種可能的方法中,我們將應用序列引數方法,透過更改引數數量來演示編譯時多型性的工作原理。

示例

//Java program to demonstrate the working of method overloading by changing the sequence of parameters
public class ARBRDD {
   static void show(int a, char ch){
      System.out.println("integer : " + a + " and character : " + ch);
   }
   static void show(char ch, int a){
      System.out.println("character : " + ch + " and integer : " + a);
   }
   public static void main(String[] args){
      show(6, 'G');
      show('G', 7);
   }
}

輸出

integer : 6 and character : G
character : G and integer : 7

方法2:render()方法的使用

在這種可能的方法中,我們將應用render方法,透過使用編譯時多型性來解釋運算子過載。

String s1 = sc.next();
System.out.println("Enter another string: ");
String s2 = sc.next();
System.out.println(s1+' '+s2);
System.out.println("Enter a number:");
int x = sc.nextInt();
System.out.println("Enter another number:");
int y = sc.nextInt();

示例1

//Java program to the use of the render() method for compile time polymorphism
class Polygon {
   public void render() {
      System.out.println("Rendering Polygon Value...");
   }
}
class Square extends Polygon {
   public void render() {
      System.out.println("Rendering Square Value...");
   }
}
class Circle extends Polygon {
   public void render() {
      System.out.println("Rendering Circle Value...");
   }
}
public class ARBRDD {
   public static void main(String[] args) {
      Square s1 = new Square();
      s1.render();
      Circle c1 = new Circle();
      c1.render();
   }
}

輸出

Rendering Square Value...
Rendering Circle Value...

在這種可能的方法中,我們將應用顯示資訊方法,透過使用編譯時多型性來解釋運算子過載。

示例2

//Java program to the use of the overriding method for compile time polymorphism
class Language {
   public void displayInfo() {
      System.out.println("Common English Language");
   }
}
class Java extends Language {
   @Override
   public void displayInfo() {
      System.out.println("Java Programming Language");
   }
}
public class ARBRDD {
   public static void main(String[] args) {
      Java j1 = new Java();
      j1.displayInfo();
      Language l1 = new Language();
      l1.displayInfo();
   }
}

輸出

Java Programming Language
Common English Language

在這種可能的方法中,我們將應用display()方法,透過使用編譯時多型性來解釋運算子過載。

示例3

//Java program to the use of the class contains a method named display() for compile time polymorphism
class Pattern {
   public void display() {
      for (int i = 0; i < 10; i++) {
         System.out.print("@");
      }
   }
   public void display(char symbol) {
      for (int i = 0; i < 10; i++) {
         System.out.print(symbol);
      }
   }
}
public class ARBRDD {
   public static void main(String[] args) {
      Pattern d1 = new Pattern();
      d1.display();
      System.out.println("\n");
      d1.display('%');
   }
}

輸出

@@@@@@@@@@
%%%%%%%%%%

在這種可能的方法中,我們將應用一些多型變數和方法,透過使用編譯時多型性來解釋運算子過載。

示例4

//Java program to the use of the class contains a method named Polymorphic Variables for compile time polymorphism
class ProgrammingLanguage {
   public void display() {
      System.out.println("I am a programmer. I Am From India!");
   }
}
class Java extends ProgrammingLanguage {
   @Override
   public void display() {
      System.out.println("I am Java and I Am An Object-Oriented Programming Language.");
   }
}
public class ARBRDD {
   public static void main(String[] args) {
      ProgrammingLanguage pl;
      pl = new ProgrammingLanguage();
      pl.display();
      pl = new Java();
      pl.display();
   }
}

輸出

I am a programmer. I Am From India!
I am Java and I Am An Object-Oriented Programming Language.

結論

編譯時多型性是一個早期繫結過程,透過它我們可以解決程式在執行模式下的過載問題。在今天的文章中,我們學習了關於編譯時多型性的各種方法。透過使用演算法和語法,我們還構建了一些Java程式碼,以有效的方式解釋問題陳述。

另請閱讀: Java面試問題及答案

更新於:2024年6月17日

284 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告