类与对象:多态

一.多态

1.概念

多态是同一个行为具有多个不同表现形式或形态的能力。

2.实现条件

1. 必须在继承体系下;
2. 子类必须要对父类中方法进行重写;
3. 通过父类的引用调用重写的方法。

3.多态的好处

1. 能够降低代码的 "圈复杂度", 避免使用大量的 if - else
2. 可扩展能力更强

二.重写

1.概念

重写(override):也称为覆盖,覆写。

2.重写规则

2.1子类在重写父类的方法时,一般必须与父类方法原型一致: 返回值类型  方法名   (参数列表)  要完全一致;
2.2被重写的方法返回值类型可以不同,但是必须是具有父子关系的;
2.3子类重写父类的方法,子类的权限要大于等于父亲的权限;
2.4父类被static、private、final修饰的方法、构造方法都不能被重写;
2.5重写的方法, 可以使用 @Override 注解来显式指定.。有了这个注解能帮我们进行一些合法性校验.。例如不小心将方法名字拼写错了 (比如写成 aet), 那么此时编译器就会发现父类中没有 aet 方法, 就会编译报错, 提示无法构成重写。

3.重写与重载

3.静态绑定和动态绑定

3.1 静态绑定

也称为前期绑定(早绑定),即在编译时,根据用户所传递实参类型就确定了具体调用那个方法。典型代表函数重载。

3.2 动态绑定

也称为后期绑定(晚绑定),即在编译时,不能确定方法的行为,需要等到程序运行时,才能够确定具体调用那个类的方法。

三.向上转型和向下转型

1.向上转型

1.1概念

概念:实际就是创建一个子类对象,将其当成父类对象来使用。
可以让代码更加简单,但是不能调用子类特有的方法。

1.2语法格式

语法格式:父类 对象名 = new 子类();

Anmial anmial=new Dog();


1.3使用场景

1.直接赋值

Anmial anmial=new Dog("大黄",1);


2.方法传参

public static void eatFood(Animal a){
        a.eat();
}


3.方法返回

public static Anmial fun(){
    Dog dog=new Dog("大黄",1);
    return dog;
}

2.向下转型

向上转型后想要调用子类的方法,那就要向下转型,将其还原回原子类。

向下转型不安全,容易转错子类,可以使用instanceof来判断是否转换正确

Anmial anmial=new Dog();
Dog dog=new Dog();
if(anmial instanceof Dog){
    dog=(Dog)anmial;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值