Java面向对象-多态性

面向对象特征之三:多态性
*
* 1.理解多态性:可以理解为一个事物的多种形态。
* 2.何为多态性:父类的引用指向子类的对象
* 3.多态的使用,虚方法调用
* 有了对象的多态性以后,我们在编程期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。
*
* 总结:编译看左边,运行看右边
*
* 4.多态性使用的前提:
* ①继承关系
* ②方法的重写
*
*
* 5.为什么要有多态性?
*
* 6.多态性不用于属性(属性:编译运行都看左边)
*
*
* 向上转型(多态)
*
*
*
*
* 向下转型(使用)
*
*有了对象的多态性以后,内存中实际上是加载了子类特有的属性和方法,但是由于变量声明为父类类型,导致
*编译时,只能调用父类中声明的属性和方法。子类特有的属性和方法不能调用。
*
*如何才能调用子类特有的属性和方法?
*向下转型,使用强制类型转换
*
*使用强转型时,可能出现异常
*
*instanceof关键字使用
* a instanceof A :判断对象a是否是类A的实例,如果是,返回true;如果不是返回false
* 使用情景:为了避免向下转型时出现异常,我们在向下转型之前,先进行instanceof的判断,一旦
* 返回true,就进行向下转型。如果返回false,不进行向下转型。


public class PersonTest {
    public static void main(String[] args) {
        //
//        Person p1=new Man();
//        p1.eat();
       // p1.earnMoney();
        //有了对象的多态性以后,内存中实际上是加载了子类特有的属性和方法,但是由于变量声明为父类类型,导致
        //编译时,只能调用父类中声明的属性和方法。子类特有的属性和方法不能调用。

        //如何才能调用子类特有的属性和方法?
        //向下转型,使用强制类型转换

        //使用强转型时,可能出现异常
        //
        // instanceof关键字使用
        // a instanceof A   :判断对象a是否是类A的实例,如果是,返回true;如果不是返回false


        //下转型对象
        Person p2=new Man();
//        Man man=(Man)p2;
//        man.earnMoney();

       // Women women=(Women)p2;

        if(p2 instanceof Women)
        {
            Women women=(Women)p2;
            women.sleep();
        }


    }
}
class Person
{
    int age;
    String name;
    public void eat()
    {
        System.out.println("吃饭");
    }
    public void walk()
    {
        System.out.println("走路");
    }
}

class Man extends Person{
    boolean fat;
    @Override
    public void eat()
    {
        System.out.println("男人吃饭");
    }
    @Override
    public void walk()
    {
        System.out.println("男人走路");
    }

    public void earnMoney()
    {
        System.out.println("赚钱");
    }
}


class Women extends Person{
    boolean height;
    @Override
    public void eat()
    {
        System.out.println("女人吃饭");
    }
    @Override
    public void walk()
    {
        System.out.println("女人走路");
    }
    public void sleep()
    {
        System.out.println("睡觉");
    }
}

 

posted @ 2020-08-07 20:50  orz江小鱼  阅读(122)  评论(0编辑  收藏  举报