Java面向对象之多态
2016-05-26 13:50
375 查看
多态:具有表现多种形态的能力的特征(同一个实现接口,使用不同的实例而执行不同的操作)
实现多态的优点:为了方便统一调用!
实现多态的三种方式!
1:子类到父类的转换:
例:
规则:
1:将一个父类的引用指向一个子类对象,称为向上转型,自动进行类型转换
2:此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法.
3:此时通过父类引用变量无法调用子类特有的方法!
2:使用父类作为方法形参实现多态
3:使用父类作为方法返回值实现多态
注意:
1:继承的存在(继承是多态的基础,没有继承就没有多态)
2:子类重写父类的方法
3:父类引用变量指向子类对象
实现多态的优点:为了方便统一调用!
实现多态的三种方式!
1:子类到父类的转换:
例:
Dog dog=new Dog("欧欧","雪纳瑞"); dog.eat(); Pet pet=new Dog("欧欧","雪纳瑞");//子类到父类的转换 pet.eat(); pet.catchingFlyDisc();//编译错误,父类的引用无法调用子类的特殊方法
规则:
1:将一个父类的引用指向一个子类对象,称为向上转型,自动进行类型转换
2:此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法.
3:此时通过父类引用变量无法调用子类特有的方法!
2:使用父类作为方法形参实现多态
public class Master { private String name=""; private int money=0; public Master(String name,int money) { this.name=name; this.money=money; } public void feed(Pet pet) { pet.eat(); } public void feed(Dog dog) { dog.eat(); } public void feed(Penguin pen) { pen.eat(); } public class Test() { public static void main(String[] args) { Master master =new Master("王先生",100); Pet pet=new Dog("欧欧","雪纳瑞"); master.feed(pet); } }
3:使用父类作为方法返回值实现多态
public class Master{ private String name=""; private int money=0; public Pet getPet(int id) { Pet pet=null; if(id==1) { pet=new Dog("欧欧","雪纳瑞") } else if(id==2) { pet=new Penguin("娜娜","帝企鹅"); } return pet; } }
注意:
1:继承的存在(继承是多态的基础,没有继承就没有多态)
2:子类重写父类的方法
3:父类引用变量指向子类对象
相关文章推荐
- java多线程
- 使用java的wsimport.exe工具生成wsdl的客户端代码
- day12
- Java _ JDK _ Arrays, LinkedList, ArrayList, Vector 及Stack
- 一幅图让你清晰记忆java数据类型
- 跨域解决 & ajax post 请求springmvc ctr 问题
- java的类和继承(转载)
- 关于JDK,JRE,JVM写的最好的文章。
- spring源码分析(1) 之 DispatcherServlet:
- java.text.MessageFormat 专题
- java通过URL读取json数据
- 学习SpringMVC(二十一)之通过超链接切换Locale
- Struts2+Spring+Hibernate搭建
- Android eclipse常见错误开发总结
- java中数组的定义及使用(转)
- MyEclipse 2015各种好用的自定义配置
- Database Pooling
- java实现FTP的上传及下载
- java中的String类(转)
- java.lang.AssertionError: java.net.SocketTimeoutException: failed to connect to /192.168.1.5 (por