java面向对象的多态性

多态:指同一个实体同时具有多种形式 
好比,你去面馆吃面,说我要吃面,那么;老板给我牛肉面,鸡蛋面等都可以, 
这就是说"面"有多种形态,也就是说实体有多种形态; 
编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给变量的对象决定。 如果编译时类型和运行时类型不同,就出现多态。

前提:Student extends Person:
Personp=new Person(); 
Student s=new Student(); 
Personp=new Student();//多态

引用关系:父类变量指向子类实例对象
实现多态的机制: 父类的引用变量可以指向子类的实例对象,而程序调用的方法在运行期才动态绑定,就是引 用变量所指向的真正实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引 用变量的类型中定义的方法。

多态的作用: 把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码, 做出通用的编程,以适应需求的不断变化。 只修改方法的实现,不必修改方法的声明 

继承是多态产生的前提条件;

分类: 
编译时多态:方法重载 
运行时多态:方法覆写
package test;
 class Dog{ 
void eat(){
 System.out.println("一般的狗吃一般的狗粮!"); 
} 
} 
class HashDog extends Dog{ 
void eat(){
 System.out.println("哈士奇吃哈士奇的狗粮!"); 
} 
} 
class ZangAoDog extends Dog{
 void eat(){ 
System.out.println("藏獒吃藏獒的狗粮!"); 
} 
}
//定义一个动物园喂的方法 
class Zoo{ 
void feed(Dog d){ 
d.eat(); }
} 
public class Demo11 { 
public static void main(String[] args) { 
Dog hd = new HashDog(); 
Dog zd = new ZangAoDog(); 
Zoo z = new Zoo();
 z.feed(hd); 
z.feed(zd); 
} 
}
输出: 哈士奇吃哈士奇的狗粮! 藏獒吃藏獒的狗粮!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值