第三章java中的多态性示例|
在本教程中,我们将了解 Java 中的多态性。
Java 中的多态性是具有抽象、封装和继承的核心面向对象编程概念之一。
Polymorphism
指一个名字多种形式。在Java中,多态可以通过方法重载和方法覆盖来实现。
java中有两种类型的多态。
- 编译时多态。
- 运行时多态性。
编译时多态
Compile time Polymorphism
只不过是java中的方法重载。您可以定义具有相同名称但方法参数不同的各种方法。您可以阅读有关方法重载的更多信息。
让我们在示例的帮助下理解:
package org.arpit.java2blog;
public class MethodOverloadingExample {
public void method1(int a)
{
System.out.println("Integer: "+a);
}
public void method1(double b)
{
System.out.println("Double "+b);
}
public void method1(int a, int b)
{
System.out.println("Integer a and b:"+a+" "+b);
}
public static void main(String args[])
{
MethodOverloadingExample moe=new MethodOverloadingExample();
moe.method1(20);
moe.method1(30.0);
moe.method1(20, 30);
}
}
当你运行上面的程序时,你会得到下面的输出:
Integer: 20
Double 30.0
Integer a and b:20 30
正如您在此处看到的,我们使用了相同的方法名称但不同的方法参数。编译器将根据最佳匹配的参数调用适当的方法。
运行时多态性
Runtime Polymorphism
只不过是java中的方法覆盖。如果子类与基类具有相同的方法,那么它被称为方法覆盖或者换句话说,如果子类为其父类之一中存在的任何方法提供特定实现,那么它就是已知的作为method overriding
.
假设您有父类 asShape
和子类Rectangle
and circle
。
package org.arpit.java2blog;
public class Shape {
public void draw()
{
System.out.println("Drawing Shape");
}
public static void main(String[] args) {
Shape s=new Rectangle();
s.draw();
s=new Circle();
s.draw();
}
}
class Rectangle extends Shape
{
public void draw()
{
System.out.println("Drawing Rectangle");
}
}
class Circle extends Shape
{
public void draw()
{
System.out.println("Drawing Circle");
}
}
当你运行上面的程序时,你会得到下面的输出:
Drawing Rectangle
Drawing Circle
请注意,我们在这里将子对象分配给父对象。
Shape s=new Rectangle();
如您所见,我们在子类 Rectangle 和 Circle 中覆盖了绘制方法。JVM在运行时根据对象分配决定它需要调用哪个方法。这就是为什么这被称为Run time polymorphism
.
这就是java中的多态性。
相关文章:
- [其它]第六章JavaFutureTask示例|
- [其它]第六章JavaScheduledThreadPoolExecutor示例|
- [其它]第六章使用Callable和Future的JavaExecutorService示例|
- [其它]第六章JavanewCachedThreadPool示例|
- [其它]第六章JavanewFixedThreadPool示例|
- [其它]第五章在java中使用3个线程打印序列|
- [其它]第五章java中notify和notifyAll的区别|
- [其它]第五章我们可以在java中启动一个线程两次吗|
- [其它]第五章java中的对象级锁定与类级锁定|
- [其它]第五章Java线程连接示例|
相关推荐:
- [其它]第三章java中的抽象类|
- [其它]第四章java中的TreeMap与示例|
- [其它]第四章java中的hashcode()和equals()方法|
- [其它]第六章JavaFutureTask示例|
- [其它]计算机组成原理PDF扫描格式电子版百度云网盘下载
- [其它]程序设计语言概念(第9版)[Robert W. Sebesta]pdf格式电子版百度云网盘下载[53.8M]
- [其它]程序员必读之软件架构[Simon Brown]pdf格式电子版百度云网盘下载[41.6M]
- [其它]程序员的思维修炼 开发认知潜能的九堂课[Andy Hunt]pdf格式电子版百度云网盘下载
- [其它]程序员的职业素养[Robert C. Martin]pdf格式电子版百度云网盘下载[21.6M]
- [其它]程序员教程(第3版)[张淑平]pdf格式电子版百度云网盘下载[136.5M]
- 计算机组成原理PDF扫描格式电子版百度云网盘下载
- 硅谷之谜[吴军]pdf格式电子版百度云网盘下载[59.5M]
- 自选基金助手,一款Chrome扩展程序
- 七周七语言 理解多种编程范型[Bruce A. Tate]pdf格式电子版百度云网盘下载[9M]
- 系统集成项目管理工程师考试考眼分析与样卷解析(2014版)[软考新大纲研究组]
- 程序员面试金典(第5版)[Gayle Laakmann McDowell]pdf格式电子版百度云网盘下载[81.5M]
- 创业维艰 如何完成比难更难的事[Ben Horowitz]pdf格式电子版百度云网盘下载[65.3
- 程序员的思维修炼 开发认知潜能的九堂课[Andy Hunt]pdf格式电子版百度云网盘下载
- 图灵的秘密 他的生平、思想及论文解读[Charles Petzold]pdf格式电子版百度云网盘下
- OCP OCA认证考试指南全册:Oracle Database 11g(1Z0-051、1Z0-052、1Z0-053)[John Watson]pdf格式