# Java学习 ## 多态的注意事项 1. 多态是方法的多态,属性没有多态 2. 父类和子类,有联系 3. 存在条件: 1. 继承关系 2. 方法需要重写 3. 父类引用指向子类对象 => `Father f1 = new Son();` * * * > 哪些条件下方法不能进行重写! 1. `static`修饰的方法,属于类,它不属于实列 2. `final`常量,存储在常量池中 3. `private`修饰的方法 ***示例代码*** `Person.java` ~~~  /**   * @ClassName: Person   * @Description: TODO   * @author: wxvirus   * @Date: 2020/5/17 12:55   */  public class Person {  ​      public void run() {          System.out.println("run");     }  } ~~~ `Student.java` ~~~  /**   * @ClassName: Student   * @Description: TODO   * @author: wxvirus   * @Date: 2020/5/17 12:55   */  public class Student extends Person {  ​      @Override      public void run() {          System.out.println("son");     }  ​      public void eat() {          System.out.println("eat");     }  } ~~~ `main.java` ~~~  /**   * @ClassName: Test   * @Description: TODO   * @author: wxvirus   * @Date: 2020/5/17 12:56   * 类型转换异常: ClassCastException   */  public class Test {  ​      public static void main(String[] args) {  ​          // 一个对象的实际类型是确定的          // 可以指向的引用类型就不确定了  ​          // Student能调用的方法都是自己的或者父类的          Student s1 = new Student();          // 父类的引用指向子类          // Person 父类型,可以指向子类,但是不能调用字类独有的方法          Person s2 = new Student();          Object s3 = new Student();            // 最终执行结果根据左侧引用的来决定,和右侧的无关          s1.run();          s2.run();          s1.eat();     }  } ~~~