java 多态

                                    第三章多态
本章目标
a。掌握多态的优势和应用场合
b。子类重写父类的方法
c。掌握instanceof运算符的使用
一丶多态
什么是多态?
多态是具有表现多种形态的能力的特征。同一个实现接口,使用不同示例而执行不同的操       作。
同样的行为,但结果不同。同一个引用类型,使用不同的实例而执行不同的操作。
父类做引用,子类做对象。
形式一:父类做形参,子类做实参
class A{
public void feed(Pet pet ){
pet.eat();
}
}
class B{
Dog dog = new Dog();
A a = new A();
a.feed(dog);
}

形式二:父类做类型,子类实例化。
Peg  peg = new Dog(); //自动转换
peg.eat();
形式三:父类作为方法的返回值类型,子类示例化。类型自动转化。
public Pet getpet(int  a ){
Pet pet  = null;
if(a == 1 ){
pet  =  new  Dog () ;
}else if (a == 2 ){
pet  =  new  Penguin();
}else if (a == 3 ){
pet  =  new Cid();
}
return pet  ;
}
二丶方法重写
1位置:在子类和父类中有同名的方法。
2方法:方法名相同,返回值和修饰符相同,参数列表相同,方法体不同。
三丶instanceof
子类转换为父类,向上转型会自动转换。
父类转换为子类,向下转型 使用 · instanceof  判断是否是父类与子类
class A{
public void paly (Pet pet) {
if ( pet instanceof Dog) {
Dog dog =  (Dog) pet ;//向下转型 进行强制转换。
}else if ( pet instanceof Penguin ) {
Penguin pe = (Penguin)pet ;
}else if ( pet instanceof Cat) {
Cat  cat = (Cat)pet ;
}
}
}
class B {
A  a = new A ();
a.paly(Dog);
}

什么时候会产生多态 
a. 有继承关系的时候会产生多态
b. 方法重写的时候


当进行数据转换的时候,会丢失数据 , 可以是:
当子类转换为父类时 , 会丢失子类特有的方法和属性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值