前言
每天坚持学习java
一点一点积累
一、多态
1.1多态介绍
在编程语言和类型论中,多态指为不同数据类型的实体提供统一的接口,多态类型可以将自身所支持的操作套用到其它类型的值上。
计算机程序运行时,相同的消息可能会送给多个不同的类别之对象,而系统可依据对象所属类别,引发对应类别的方法,而有不同的行为。简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作。
多态也可定义为“一种将不同的特殊行为和单个泛化记号相关联的能力”。
多态可分为变量多态与函数多态。变量多态是指:基类型的变量(对于C++是引用或指针)可以被赋值基类型对象,也可以被赋值派生类型的对象。函数多态是指,相同的函数调用界面(函数名与实参表),传送给一个对象变量,可以有不同的行为,这视该对象变量所指向的对象类型而定。因此,变量多态是函数多态的基础。
1.2多态的作用
什么是多态:
通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同 的状态。
多态的前提
要有继承或实现关系
要有方法的重写
要有父类引用指向子类对象
1.3多态的特点
成员访问特点
成员变量
编译看父类,运行看父类
成员方法
编译看父类,运行看子类
示例:
publicclassAnimal{
publicintage=40;
publicvoideat(){
System.out.println("动物吃东西");
}
}
1.4多态的好处和弊端
好处
提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作
弊端
不能使用子类的特有成员
二、代码练习
猫类
publicclassCatextendsAnimal{
publicintage=20;
publicintweight=10;
@Override
publicvoideat(){
System.out.println("猫吃鱼");
}
publicvoidplayGame(){
System.out.println("猫捉迷藏");
}
}
狗类
publicclassDogextendsAnimal{
publicDog(){
}
publicDog(Stringname,intage){
super(name,age);
}
@Override
publicvoideat(){
System.out.println("狗吃骨头");
}
}
动物类
publicclassAnimal{
privateStringname;
privateintage;
publicAnimal(){
}
publicAnimal(Stringname,intage){
this.name=name;
this.age=age;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicvoideat(){
System.out.println("动物吃东西");
}
}