Java多态小结

来源:互联网 发布:插画师软件 编辑:程序博客网 时间:2024/06/05 12:02

在学过继承之后,我们知道可以通过继承的方式实现代码的重用,同时也可以更加清楚的表示各个实例之间的关系,多态按字面的意思就是“多种状态”,是指对象调用相同的方法执行的操作不同,或者说同一实现接口,使用不同的实例而执行不同的操作。实现多态的过程包括:

1、子类重写父类的方法。

2、编译方法时,调用父类定义的方法。

3、运行时,根据实际创建的对象类型动态决定使用哪个方法。

class Person{

public void printInfo(){

//....
}
//...
}

class Student extends Person{
void study(){

}

public void printInfo(){

System.out.println("这是学生")
}
}

class Teacher extends Person{
void teach(){
//....
}

public void printInfo(){

System.out.println("这是老师")
}
}

class School{
public void openDoor(Person p){

p.printInfo();
}
}

当openDoor()传入不同的参数时,就会产生不同的运行效果以此来实现多态。


Person p = new Student();

代码向上转型,p称为Student的转型对象具体特点为:
1、上转对象不能操作子类新增的成员变量(失掉了这一部分属性),不能使用子类新增的方法(失掉了一些功能)
2、上转型对象可以操作子类继承或隐藏成员变量,也可以使用子类继承的或重写的方法
3、上转型对象操作子类继承或重写的方法时,就是通知对应的子类对象去调用这些方法。因此,如果子类重写了父类的某个方法后,对象的上转型调用这个方法时,一定是调用了这个重写的方法
4、可以将对象的上转型对象再强制转换到一个子类对象,这时,该子类对象又具备了子类所有属性和功能(类似于基本数据类型中高精度数给低精度需要强制转换)。

instanceof方法:obj  instanceof  className/InterfaceName 返回值为boolean 类型

0 0
原创粉丝点击