Day22多态详解

多态是面向对象的重要特性,在java中表现为父类引用指向子类对象 Father f1 = new Son();
多态是方法的多态,与属性无关
父类与子类之间需要有联系,否则类型转换异常,即ClassCastException
多态的存在条件是两个类之间有继承关系,方法重写时
有几个方法无法被重写:1,static 方法,属于类,它不属于实例
2,final 常量
3,private方法

package Demo6;

public class Application {
    public static void main(String[] args) {
        //一个对象的实际类型是确定的
        //如下方的Student s1

        //可以指向的引用类型就不确定了:父类的引用指向子类
        //Student里的方法包含自己本身有的,从父类继承来的
        Student s1 = new Student();
        //可以指向子类,但无法调用子类独有的方法
        Person s2 = new Student();
        Object s3  = new Student();

        //对象能执行那些方法取决于左边里是否包含,与右边关系不大

        //左边,即引用类型决定了有无权限取调用这个方法
        //右边,即实际对象类型决定了调用方法是执行哪一种版本,是原始的,还是子类重写过的
        s1.run();//子类重写父类的方法,此时执行了子类的方法
        s2.run();
        s1.eat();
        ((Student) s2).run();//强制转换,依旧遵循高转低将Person转换为Student,方便其调用Student中独有的方法

    }
}
package Demo6;

public class Person {
    public void run(){
        System.out.println("四分配");
    }
}
package Demo6;

public class Student extends Person {
    @Override
    public void run() {
        System.out.println("直面失败");
    }

    public void eat(){
        System.out.println("及时行乐");
    }
}
posted @ 2025-09-26 23:54  冰涿  阅读(11)  评论(0)    收藏  举报