多态性
注意事项:
- 多态性是方法的多态,而不是属性的多态
- 多态性不能单独调用子类独有的函数
- 调用函数时,执行子类独有的函数
- 存在条件:有继承关系,方法必须重写,父类引用指向子类对象
- static方法,属于类,它不属于实例
- final
- private
这三个均不可能有多态
多态举例:
public class AnimalTest{
public static void main(String[] args){
AnimalTest test = new AnimalTest();
test.fun(new Dog);
test.fun(new Cat);
}
public void fun(Animal animal){
animal.shout();
}
}
class Animal{
public void shout(){
System.out.println("ffff");
}
}
class Dog extends Animal{
public void shout(){
System.out.println("cccccc");
}
}
class Cat extends Animal {
public void shout(){
System.out.println("aaaaaaa");
}
}
类型转换
- 父类引用指向子类的对象
- 把子类转换为父类,向上转型
- 把父类转换为子类,向下转型,强制转换
- 方便了方法的调用,减少了大量重复的代码
public class Application{
public static void main(String[] args){
//类型之间的转换:父 子
//高 低
Person student = new Student()
//将student这个对象转换成Student类型,我们就可
//以使用Student类型的方法了
Student student = (Student) student;
student.go()//这里就可以直接调用Student独有的函数go()了
(Student(student)).go();//和上面效果一样
}
}