java之多态

多态的两种形式

父类名 对象名 = new 子类名();父类只能使用父类中的方法
接口名 对象名 = new 实现类名()
1,多态中的成员变量的使用(和继承一样)
当父类与子类中存在重名成员变量时 在创建类对象时等号左边是哪个类就用哪个类中的成员变量
如 父类 对象名 = new 子类名(),对象名.重名变量;此时使用的是等号左边的父类中的成员变量的值
2,多态中的成员方法调用(和继承一样)
当父类与子类中存在重名成员变量时,在创建对象时等号右边new的是谁就优先调用谁的重名方法,没有则向父类中找
如 父类 对象名 = new 子类名()时,多态调用方法的实质是在编译器(编写代码的时候)会先去父类中查找有没有
(对象名.方法名)这个方法有的话编译期就不会报错,但是在运行期时会先去子类中查找有没有这个方法有的直接执行,
不会不执行父类中的重名方法,所以使用多态时类对象不可以调用父类中没有的方法(但是可以将类对象强制转换为子类对象)

在这里插入图片描述

public class PolymorphicClass {
    public static void main(String[] args) {
        Fu OBJ = new Zi();
        ((Zi)OBJ).methodZi();
     //   OBJ.methodZi();//编译期就报错
    }
}

public class Fu  {
    public void method(){
        System.out.println("父类中的method方法");
    }
    public void methodFu(){
        System.out.println("父类中的methodFu放啊发");
    }
}

public class Zi extends Fu{
    @Override
    public void method(){
        System.out.println("子类中的method方法");
    }
    public void methodZi(){
        System.out.println("子类中的methodZi方法");
    }
}


多态的好处

使用多态时在创建对象时不管心new的是哪个对象(必须是子类),等号的左边使用其父类作为接收的,所以当把父类作为方法的参数时,只要调用方法传入的参数时其子类时都可以将其传入,并使用这个传入的参数可以调用这个子类中的方法
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值