实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
多态的作用:消除类型之间的耦合关系。
多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
*对象向上转型:父类 父类对象 = 子类实例;
public class FunctionTest{
public static void main(String[] args) {
//实例化student类
Student student = new Student();
//向上转型
Person p = student;
//由于fun1()已经被子类重写
student.fun1();
}
}
class Person{
public void fun1(){
System.out.println("A");
}
public void fun2(){
this.fun1();
}
}
class Student extends Person{
//重写A中的方法
@Override
public void fun1(){
System.out.println("B");
}
@Override
public void fun2(){
this.fun1();
}
}
输出结果为B
对象向下转型:子类 子类对象 = (子类)父类对象;*
public class FunctionTest{
public static void main(String[] args) {
//向上转型 子类---》父类
Person person = new Student();
//向下转型
Student student = (Student)person;
//B 调用被重写的方法
student.fun1();
//B 调用父类的方法 this指向子类Stundent的fun1()方法输出B 注意不是A
student.fun2();
// C 调用子类的方法
student.fun3();
}
}
class Person{
public void fun1(){
System.out.println("A");
}
public void fun2(){
this.fun1();
}
}
class Student extends Person{
//重写A中的方法
@Override
public void fun1(){
System.out.println("B");
}
public void fun3(){
System.out.println("C");
}
}
原文:https://www.cnblogs.com/tyy8/p/14598736.html