专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 带你了解Java多态的概念

带你了解Java多态的概念

更新时间:2022-03-22 09:17:47 来源:星辉 浏览1055次

多态性一词意味着具有多种形式。简单来说,我们可以将多态性定义为消息以多种形式显示的能力。

现实生活中的插图:多态性

一个人同时可以有不同的特征。就像一个男人同时是父亲、丈夫、雇员。因此,同一个人在不同的情况下具有不同的行为。这称为多态性。

多态性被认为是面向对象编程的重要特征之一。多态性允许我们以不同的方式执行单个操作。换句话说,多态性允许您定义一个接口并具有多个实现。“poly”这个词意味着许多,“morphs”意味着形式,所以它意味着许多形式。

多态性的类型

Java中的多态主要分为两种:

编译时多态性

运行时多态性

类型 1:编译时多态性

它也被称为静态多态性。这种类型的多态性是通过函数重载或运算符重载来实现的。

注意:但 Java 不支持运算符重载。

方法重载:当有多个同名但参数不同的函数时,这些函数称为重载。函数可以通过更改参数数量或/和更改参数类型来重载。

示例 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:运行时多态性

它也被称为动态方法调度。这是一个在运行时解析对被覆盖方法的函数调用的过程。这种类型的多态性是通过方法覆盖来实现的。 另一方面,当派生类具有基类的一个成员函数的定义时,就会发生方法覆盖。据说该基本功能已被覆盖。

例子

// 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

输出说明:

在这个程序中,当一个子类的对象被创建时,子类内部的方法就会被调用。这是因为父类中的方法被子类覆盖了。由于该方法被重写,因此该方法在子类中比父方法具有更高的优先级。因此,子类中的主体被执行。

通过上述介绍大家对Java多态的概念已经有所了解,当然,Java多态的存在也是有条件的,感兴趣的小伙伴可以关注一下星辉的java多态的三个条件分别是什么,希望对大家的学习有所帮助。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>