面向对象的三大特性之多态
来源:互联网 发布:win10 mac地址怎么查 编辑:程序博客网 时间:2024/05/17 04:59
多态
什么叫多态
多态: 指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)换句话说,猫和狗都是动物,但它们的叫声不一样,所以猫和狗是动物的多态.
多态的好处
- 可替换性: 多态对已存在代码具有可替换性。例如:动物会吃东西,但如果是猫会吃鱼,如果是狗会吃肉.
- 可扩充性: 多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。在实现猫、狗实现多态的基础上,添加老鼠这个新类不会影响猫,狗原有类
- 接口性: 多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
- 灵活性: 它在应用中体现了灵活多样的操作,提高了使用效率。
- 简化性: 多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。
实现多态需要三个条件
- 继承
- 方法的覆盖
- 父类引用指向子类对象
简单实例:
父类:
public class Animal { private int age; private String voice; public String getVoice() { return voice; } public void setVoice(String voice) { this.voice = voice; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String call(){ return "我今年"+age+"岁了"+"我是这样叫的"+voice; }}
子类:
public class Cat extends Animal { public Cat cat; public Cat() { cat = new Cat(); cat.setAge(2); cat.setVoice("喵喵喵"); } @Override public String call() { return "我是只猫,我今年"+cat.getAge()+"岁了"+"我是这样叫的"+cat.getVoice(); }}
public class Dog extends Animal { public Dog dog; public Dog() { dog = new Dog(); dog.setAge(5); dog.setVoice("汪汪汪"); } @Override public String call() { return "我是条狗,我今年"+dog.getAge()+"岁了"+"我是这样叫的"+dog.getVoice(); }}
测试类:
public class Test { private Test test; public String animalCall(Animal animal){ return animal.call(); } public Test() { test = new Test(); test.animalCall(new Cat()); test.animalCall(new Dog()); test.animalCall(new Animal()); }}
我们看到例子中,我们实现了继承,方法的覆盖以及父类引用指向子类对象这三个条件,所以我们实现了多态特性.
1 0
- 面向对象三大特性之多态
- 面向对象三大特性之多态
- 面向对象三大特性之多态
- java面向对象的三大特性之多态
- 面向对象的三大特性之多态
- 面向对象的三大特性之多态
- 面向对象的三大特性之多态-java版
- 面向对象三大特性之多态(三)
- 黑马程序员----------面向对象三大特性之多态
- 小糖出品:面向对象三大特性之多态
- java基础--面向对象三大特性之多态
- Java面向对象三大特性之多态
- Java-面向对象编程-三大特性之多态
- 【Java基础知识】面向对象三大特性之多态
- PHP面向对象三大特性之多态基础
- Objective-C基础学习笔记(五)-面向对象的三大特性之多态
- 黑马程序员--IOS学习日记:05--面向对象的三大特性之多态
- 面向对象的三大对象之多态
- 在MQTT服务器mosquitto上使用SSL/TSL
- 简单的生产者消费者例子
- POJ3256 Cow Picnic DFS搜索
- 分布式锁的几种实现方式
- [Language]Python中错误与异常
- 面向对象的三大特性之多态
- iOS
- 安卓开发:数字文字选择器
- 欢迎使用CSDN-markdown编辑器
- 遍历HashMap的四种方式
- 【LeetCode】49. Group Anagrams
- POJ3177Redundant Paths (双联通分量)
- Android 软键盘的处理
- PHP 打开文件浏览器并传递文件