public class AppLication { public static void main(String[] args) { //一个对象的实际类型是确定的 // new Studyend(); // new Person(); //可以指向的引用类型就不确定了 //子类能调用的方法都是自己的或者是继承父类的 Studyend s1 = new Studyend(); //父类可以指向子类,但是不能调用子类独有的方法 Person s2 = new Studyend();//父类的引用指向子类 Object s3 = new Studyend();//父类的引用指向子类 s2.run();//子类重写了父类的方法,所以执行子类的方法 s1.run(); s1.eat(); /* 多态注意事项 -多态是方法的多态,属性无多态 存在条件 -有extends关系 -方法需要重写 -父类指向子类对象 -没有联系则会出现类型转换异常(ClassCastException) 那些方法不能重写? -static:属于类不属于实例 -final:常量 -private:私有 */ } }
public class Person { public void run(){ System.out.println("run"); } }
public class Studyend extends Person{ @Override public void run() { System.out.println("son"); } public void eat(){ System.out.println("eat"); } }