Java学习笔记_006多态

多态===============================================
1.有继承
2.有方法的重写
3.父类引用指向子类对象
满足以上三句话就是多态


特点如下:
1.调用重写过的方法,实际是调用子类的方法
2.调用父类的方法
3.不能调用子类中特有的方法


注:
所需要调用子类特有方法或者成员变量需要将其强转成子类
只能强转成原来的子类,不能强转成别的子类,否则编译检查不出来不过运行会报错


优点:
写下一个父类的static方法,重写各自子类的public方法,可以实现不改写父类static方法的情况下根据传入对象属于子类的不同执行不同的子类里面重写的那个方法。






//===============================================
public class sum {
public static void main(String[] args){
Father f = new Son();
f.play();//调用的是子类中的方法
f.smoke();//调用的是父类中的方法

Father f2 =new Daughter();
f2.play();
f2.smoke();
// f2.drink();//无法调用子类专有方法
//多态实例
doSth(new Son());
doSth(new Daughter());

//无法调用父类没有的子类方法
Son s = (Son)f;
s.game();//经过强转后能实现调用子类专有方法
}


public static void doSth(Father father){
father.play();
}
}


//===============================================


class Father{
public void play(){
System.out.println("爸爸爱玩");
}
public void smoke(){
System.out.println("饭后来一根");
}
}
//===============================================
class Son extends Father{
public void play(){
System.out.println("儿子爱玩");
}
public void game(){
System.out.println("打游戏");
}
}
//===============================================
class Daughter extends Father{
private String name = "奶茶妹妹";
public void play(){
System.out.println("爱上京东");
}
public void drink(){
System.out.println("爱喝奶茶");
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值