抽象类,多态的实现_食物,动物,人
来源:互联网 发布:中国软件走势 编辑:程序博客网 时间:2024/04/29 04:01
多态有利于代码的扩展和维护.
"开放-封闭"原则(OCP):领悟新功能的加入没有影响到系统原有的结构。
一、 理解多态
a) 多态性是指子类对象可以直接赋值给父类变量。但在运行时依然表现出子类的特征。Java引用变量有两种类型,分别是编译时类型和运行时类型,编译时类型由声明类型决定,运行时类型由赋值对象的类型决定。如果编译时类型和运行类型不一致,就会出现所谓多态。
b) 可以这样理解:多态是指通过父类型的变量引用不同的子类对象(也就是说父类型变量指向的是一个子类对象,JVM会在运行时动态的绑定父类型变量所指向的子类对象),来调用在不同子类中实现的方法。
c) 继承和抽象类、接口都是多态性的实现技术。
d) 多态有利于
e) 多态包括方法重写和方法重载。代码的维护和扩展。
下面就以人类用不同的食物喂养不同的动物举例说明多态的应用,一个简单的例子。
首先申明抽象类
public abstract class Animal {public abstract void eat(Food food);}
public abstract class Food {protected String name;public Food() {super();// TODO Auto-generated constructor stub}public Food(String name) {super();this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
public class Dog extends Animal{public void eat(Food food){System.out.println("这只狗儿在吃:" + food.getName());}}
public class Cat extends Animal{public void eat(Food food){System.out.println("这只猫在吃" + food.getName());}}
食物的继承类:
public class Fish extends Food{public Fish(String name){super(name);}}
public class Bone extends Food{public Bone(String name){super(name);}}
人的类:
public class Master {public void feed(Animal animal,Food food){animal.eat(food);}}
最后测试类:
public static void main(String[] args) {// TODO Auto-generated method stubMaster master = new Master();Animal animal = new Dog();Food food = new Fish("小鱼");master.feed(animal, food);animal = new Cat();master.feed(animal, food);food = new Bone("骨头");master.feed(animal, food);}
以后如果要加入动物或者食物都不影响原来的代码,不用修改代码了,这就是继承与多态.
0 0
- 抽象类,多态的实现_食物,动物,人
- 关于动物的抽象类
- 抽象类练习:抽象动物
- 关于动物的抽象模拟器
- 第十三周任务二 动物的叫声(抽象类)
- 用抽象类来模拟动物的叫声
- 用抽象类来模拟动物的叫声
- C++语言 对动物的行为实现多态
- Python类实现动物种类的派生
- 黑马程序员_学习日记36_531基础加强(抽象类、接口实现多态)
- 动物叫(练习继承,抽象类)
- 第十三周 项目一--动物 这样叫(3)有数据成员的抽象类
- 抽象类实现多态
- 运用类的继承和派生实现动物怎么叫
- 动物抽象问题
- 黑马程序员_java语言_多态中的抽象类以及接口的深入分析
- 黑马程序员_抽象类、接口与多态
- 黑马程序员_抽象类的学习
- C++ 合并/去除字符串中多余的空格(创建新串)
- JAVA --网络编程
- unix和dos文本文件的区别
- 两天学会DirectX 3D之第二天
- 信用卡评分中的误判问题说明
- 抽象类,多态的实现_食物,动物,人
- Leetcode-Implement Stack using Queues(C++)
- 3.前行必备,掌握日志工具的使用
- ubuntu_jdk
- 微信支付 APP 支付方式的服务器端处理程序
- 《JAVA与模式》之装饰模式
- Android仿虾米音乐播放器之通知栏notification解析
- 二维码生成代码(Java)
- 据说年薪30万的Android程序员必须知道的帖子