多态是同一个行为具有多个不同表现形式或形态的能力。
多态:即同一方法可以根据发送对象的不同而采用不同的行为方式。
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(指父类或者有关系的类)
多态注意事项:
多态是方法的多态,属性没有多态要有继承的关系:父类和子类,要有联系。否则类型转换异常 ClassCastException!存在条件:继承关系,方法需要重写,父类引用指向子类对象!有些方法不能被重写:
static方法:静态方法,属于类的方法,不属于实例,不可被重写final:常量,不可被重写private:私有方法,不可被重写
public class Application {
public static void main(String[] args) {
//一个对象的实际类型是确定的
new Person();
new Student();
//对象可以指向的引用类型不确定:父类的引用指向子类
//Student 子类:能调用的方法都是自己的或者继承自父类的!
Student student1 = new Student();
//Person 父类:可以指向子类,但是不能调用子类独有的方法!子类重写了方法时调用子类的方法!
Person student2 = new Student();
Object student3 = new Student();
//对象能执行哪些方法,主要看对象左边的类型,和右边关系不大!
//方法的调用:父类和子类都有的方法
student2.run(); //子类重写了父类的方法,则执行子类的方法
student1.run();
//方法的调用:子类有而父类没有的方法
//student2.eat(); 不可行,子类没有此方法!
((Student)student2).eat(); //如要调用子类特有的方法,需强制类型转换成子类类型
student1.eat();
}
}
public class Person {
public void run() {
System.out.println("Person run");
}
}
public class Student extends Person {
@Override
public void run() {
System.out.println("Student run");
}
public void eat() {
System.out.println("Student eat");
}
}
------------------------------“笔记整理自跟着《狂神说Java》”----------------------------------



