5.18Java学习

面向对象特征之三:多态性

1. 如何理解多态性?

理解:理解为一个事物的多种形态。

生活举例:
> 女朋友:我想养一个宠物。
> 孩子:我想要一个玩具。
> 老板:张秘书,安排一个技术科的同事,跟我一起下周出差。

2. Java中多态性的体现:
   子类对象的多态性:父类的引用指向子类的对象。(或子类的对象赋给父类的引用)
   比如:Person p2 = new Man();

3. 多态性的应用:
多态性的应用:虚拟方法调用

在多态的场景下,调用方法时。
    编译时,认为方法是左边声明的父类的类型的方法(即被重写的方法)
    执行式,实际执行的是子类重写父类的方法。
简称为:编译看左边,运行看右边。

4. 多态性的使用前提:① 要有类的继承关系 ② 要有方法的重写

5. 多态的适用性:适用于方法,不适用于属性。

6. 多态的好处与弊端
6.1 弊端:
在多态的场景下,我们创建了子类的对象,也加载了子类特有的属性和方法。但是由于声明为父类的引用,
导致我们没有办法直接调用子类特有的属性和方法。

6.2 好处:
极大的减少了代码的冗余,不需要定义多个重载的方法。

举例:

class Account{
    public void withdraw(){} //取钱
}

class CheckAccount extends Account{ //信用卡
    //存在方法的重写
    public void withdraw(){} //取钱
}
class SavingAccount extends Account{ //储蓄卡
    //存在方法的重写
}

class Customer{
    Account account;

    public void setAccount(Account account){
        this.account = account;
    }

    public Account getAccount(){
        return accout;
    }

}

class CustomerTest{
    main(){
        Customer cust = new Customer();
        cust.setAccount(new CheckAccount());

        cust.getAccount().withdraw();

    }
}

7. instanceof的使用

/*
* 1. 建议在向下转型之前,使用instanceof进行判断,避免出现类型转换异常
* 2. 格式: a instanceOf A : 判断对象a是否是类A的实例。
* 3. 如果a instanceOf A 返回true,则:
*       a instanceOf superA 返回也是true。其中,A 是superA的子类。
* */

5.18Java学习_第1张图片

你可能感兴趣的:(java,学习,开发语言)