更新时间:2022-06-08 11:27:30 来源:极悦 浏览2075次
极悦小编来给大家举Java多态性的例子,多态性是OOP的功能之一,它允许我们以不同的方式执行单个操作。例如,假设我们有一个Animal有方法的类sound()。因为这是一个通用类,所以我们不能给它一个实现,比如:Roar、Meow、Oink 等。我们必须给出一个通用的消息。
public class Animal{ ...
public void sound(){
System.out.println("Animal is making a sound");
}
}
现在假设我们是 Animal 类的两个子类:Horse它Cat扩展了Animal类。我们可以像这样为相同的方法提供实现:
public class Horse extends Animal { ... @Override public void sound (){ System . 出来。println ( "邻居" ); } }
和
public class Cat extends Animal{
...
@Override
public void sound(){
System.out.println("Meow");
}
}
正如你所看到的,虽然我们对所有子类都有共同的行动,sound()但有不同的方式来做同样的行动。这是多态性的完美示例(允许我们以不同方式执行单个操作的功能)。只调用通用 sound() 方法是没有任何意义的,因为每个 Animal 都有不同的声音。因此我们可以说这个方法执行的动作是基于对象的类型。
运行时多态示例:
Animal.java
public class Animal{
public void sound(){
System.out.println("Animal is making a sound");
}
}
Horse.java
class Horse extends Animal{
@Override
public void sound(){
System.out.println("Neigh");
}
public static void main(String args[]){
Animal obj = new Horse();
obj.sound();
}
}
输出:
Neigh
Cat.java
public class Cat extends Animal{
@Override
public void sound(){
System.out.println("Meow");
}
public static void main(String args[]){
Animal obj = new Cat();
obj.sound();
}
}
输出:
Meow
另一方面,方法重载是一个编译时多态性示例。
class Overload
{
void demo (int a)
{
System.out.println ("a: " + a);
}
void demo (int a, int b)
{
System.out.println ("a and b: " + a + "," + b);
}
double demo(double a) {
System.out.println("double a: " + a);
return a*a;
}
}
class MethodOverloading
{
public static void main (String args [])
{
Overload Obj = new Overload();
double result;
Obj .demo(10);
Obj .demo(10, 20);
result = Obj .demo(5.5);
System.out.println("O/P : " + result);
}
}
这里方法demo()重载了 3 次:第一个方法有 1 个 int 参数,第二个方法有 2 个 int 参数,第三个方法有 double 参数。调用哪个方法取决于我们在调用方法时传递的参数。这发生在运行编译时,因此这种类型的多态性称为编译时多态性。
输出:
a : 10
a和b : 10 , 20双a : 5.5
O / P : 30.25
以上就是小编举的Java多态性的例子,大家如果想了解更多相关知识,不妨来关注一下极悦的Java视频教程,里面的课程内容从入门到精通,细致全面,通俗易懂,很适合没有基础的小伙伴学习,希望对大家能够有所帮助哦。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习