java多态
2020-05-12 17:28
32 查看
多态可以使用户的应用程序具有可扩展性
理解
多态就是同一种行为具有多种表现形式的特征
好比生活中的手机,由于拨打的电话号码不同可以拨给不同的人,如拨打110是报警电话119是火警电话等。
java中多态的实现
1.overloading方法重载
主要用于在同一个类中有多个具有相同名称的方法,包括构造方法的重载,方法具有不同的参数
[code]import java.util.ArrayList; public class overLoadTest { //属性 //方法 //构造方法的重载 public overLoadTest(){} public overLoadTest(int i){} public overLoadTest(ArrayList list){} //自定义方法的重载 public void a(){} public String a(int a,int b){ return "结果:"+a+b; } }
2.override方法重写
主要用于当子类和父类具有相同的名称、返回值类型和形参列表三种场合
[code]public class Father { //属性 String name="法拉利"; String color="red"; //方法 public void Sudu(){ System.out.println("每小时100公里"); } } public class Son extends Father { public void Sudu()//子类重写父类中的方法 { System.out.println("meixiaoshi 1022550公里"); } }
方法重写时不能比被重写的方法更严格的访问权限
重新定义方法时,可以重新定义返回值类型
[code]public class Bird { protected String name; public Bird(String name){ this.name=name; } public Bird getCopied(){ return new Bird(name); } }
重新定义的返回值类型必须是父类中同一方法返回值类型的子类型,并且无法重新定义static方法
[code]public class Chicken extends Bird{ protected String crest; public Chicken(String name,String crest){ super(name); this.crest=crest; } //重新定义返回值类型为Chicken public Chicken getCopied(){ return new Chicken(name,crest); } }
多态的实现步骤
- 子类重写父类方法
- 编写方法时,使用父类定义的方法
- 运行时,根据实际创建的对象类型动态决定使用哪个方法
[code]/*父类*/ public class Chicken extends Bird{ protected String crest; public Chicken(String name,String crest){ super(name); this.crest=crest; } //重新定义返回值类型为Chicken public Chicken getCopied(){ return new Chicken(name,crest); } } /*子类1*/ public class CaiSeDaYin extends DaYinJi{ public void giveDaYin(){ System.out.println("打印彩色"); } } /*子类2*/ public class HeiBaiDaYin extends DaYinJi { public void giveDaYin(){ System.out.println("打印黑白"); } } /*测试类*/ public class DaYinJiTest { public static void main(String[] args){ PanDing hq= new PanDing(); hq.judge(new CaiSeDaYin());//传彩色打印的对象 hq.judge(new HeiBaiDaYin());//传黑白打印的对象 } }
输出结果为:
打印彩色
打印黑白
相关文章推荐
- Java之动态绑定(多态)
- 【小白日记】Java 多态中的两种类型转换
- Java(三)对象类型的转换和多态机制
- Java 多态之“绑定”
- thinking in java笔记 8 多态
- 来一把 java面向对象的封装,继承,多态《有点糙,欢迎点评》
- JAVA菜鸟(二)面向对象之封装,继承,多态
- Java中多态的理解
- Java中的继承,封装,多态三种体系与C++的区别
- java的编译时多态和运行时多态
- 多态在 Java 和 C++ 编程语言中的实现比较
- Java 实验案例(多态)
- java中的多态和接口
- 自学Java——day_09 接口、多态
- java多态实现原理
- 【Java概念】多态(9)
- Java面向对象的多态案例
- java面向对象三大特性:封装、继承、多态
- Java多态的实现机制
- java详解final、多态、抽象类、接口原理