多态--前提:方法覆写:
同一个类实例的相同方法在不同情形下有不同表现形式。
1.向上转型(90%)---用于参数统一化
父类 父类引用=new 子类();
person per=new student();
class person{
public void print(){
System.out.println("hello");
}
}
class student extends person{
public void print(){
System.out.println("xiaoshazi");
}
}
public class hehe{
public static void main(String[]args){
person per=new student();//向上转型
per.print();
}
}
2.向下转型(1%)-----需要强制类型转换--用于父类引用需要调用子类扩充方法时:
子类 子类引用=父类实例
student stu=(student)per;
要发生向下转型,必须先发生向上转型(爹认儿子,亲子鉴定)
(运行异常)classCastException:发生在两个不能强转的类之间
class Person{
public void print(){
System.out.println("1.我是爸爸!");
}
}
class Student extends Person{
public void print(){
System.out.println("2.我是儿子!");
}
public void fun(){
System.out.println("只有儿子有!");
}
}
public class hehe{
public static void main(String[] args) {
Person per = new Student();
per.print();
//这个时候父类能够调用的方法只能是本类定义好的方法
//所以并没有Student类中的fun()方法,那么只能够进行向下转型处理
Student stu = (Student)per;
stu.fun();
}
}