什么是多态
1 package com.oop; 2 3 import com.oop.demo6.Person; 4 import com.oop.demo6.Student; 5 6 public class Application { 7 8 public static void main(String[] args) { 9 //一个对象的实际类型是确定的 10 //new Student(); 11 //new Person(); 12 13 //可以指向的引用类型就不确定了:父类的引用指向子类 14 Student s1 =new Student(); 15 //Person父类型,可以指向子类,但是不能调用子类独有的方法 16 Person s2 = new Student(); 17 Object s3 = new Student(); 18 //对象能执行哪些方法,主要看对象左边的类型,和右边关系不大! 19 ((Student)s2).eat(); //子类重写了父类的方法,执行子类的方法 20 s1.eat(); 21 22 } 23 24 25 }
1 package com.oop.demo6; 2 //在Java中, 所有的类,都默认直接或者间接继承object 3 //Person人: 父类 4 //ctrl+H 展开继承关系树 5 public class Person { 6 public void run(){ 7 System.out.println("run"); 8 } 9 } 10 /* 11 多态注意事项: 12 1.多态是方法的多态,属性没有多态 13 2.父类和子类,有联系类型转换异常! cLasscastException ! 14 3.存在条件:继承关系,方法需要重写,父类引用指向子类对象!Father f1 = new Son( ); 15 1. static方法,属于类,它不属于实例 16 2. final常量; 17 3. private方法; 18 */
1 package com.oop.demo6; 2 //学生 is 人:派生类,子类 3 //子类继承了父类,就会拥有父类的全部方法! 4 public class Student extends Person { 5 @Override 6 public void run() { 7 System.out.println("son"); 8 } 9 public void eat(){ 10 System.out.println("eat"); 11 } 12 }