其他分享
首页 > 其他分享> > Day49-多态

Day49-多态

作者:互联网

多态


  1. 有继承关系
  2. 子类重写父类方法
  3. 父类引用指向子类对象
package com.oop.demo06;

public class Debug {
    public static void main(String[] args) {
        //子类是父类的扩展!
        //子类是父类的扩展!
        //子类是父类的扩展!

        //一个对象的实际类型是确定的
        //new Person();
        //new Student();

        //可以指向的引用类型就不确定了
        Student s1 = new Student();
        Person s2 = new Student();//父类的引用指向子类的类型
        Object s3 = new Student();//父父类的引用指向子类的类型
        //如果父类和子类都有同个方法,重写后只会执行子类方法
        s2.run();//不重写前是父类方法 重写后直接执行子类方法
        s1.run();
        //Person父类型 虽然可以指向子类,但是不能调用子类独有的方法
        s1.eat();//对象能执行哪些方法 主要看对象左边的类型,和右边基本上没什么关系
        ((Student)s2).eat();//强制转换类型
    }
}
package com.oop.demo06;

public class Person {

    public void run(){
        System.out.println("父类跑起来");
    }
}

/*
多态注意事项:
        1.多态是方法的多态,属性没有多态
        2.父类和子类,有联系,才能强制转换
        3.类型没有关系强制转换会抛出异常:类型转换异常! ClassCastException
        4.多态存在的条件:继承关系,方法需要重写,父类的引用变量名指向的是子类对象
    例如:Person s2 = new Student();父类指向子类

    1.static 方法 属于类 不属于实例,不能被重写
    2.final 常量,无法被改变,无法被重写
    3.private 方法,私有的,无法被重写
 */
package com.oop.demo06;

public class Student extends Person{
    @Override
    public void run() {
        System.out.println("子类跑起来");
    }
    public void eat(){
        System.out.println("子类吃起来");
    }
}

标签:Student,子类,多态,Day49,父类,重写,public
来源: https://blog.csdn.net/qq_52857236/article/details/113776499