多态
- 即同一方法可以根据发送对象的不同而采用多种不同的行为方式
- 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多
多态注意事项:
1.多态是方法的多态,属性没有多态
2.父类和子类
3.存在条件:继承关系,方法需要重写,父类引用指向子类对象!Father f1=new Son();
不能重写的:
1.static 方法,属于类,它不属于实例
2.final 常量
3.private方法:私有
instanceof判断两个类是否存在父子类关系
public class Person {
public void run(){
System.out.println("father");
}
}
public class Student extends Person {
@Override
public void run() {
System.out.println("son");
}
public void eat(){
System.out.println("eat");
}
}
public static void main(String[] args) {
// 一个对象的实际类型是确定的
// 子类可以调用自己或者继承父类的方法
Student s1 = new Student();
// person父类可以指向子类,但不能调用子类独有的方法
Person s2 = new Person();
Object s3 = new Student();
s1.run();//son
s2.run();//son
s1.eat();
// s2.eat();父类不能调用子类独有的方法
}
}
类型转换
1.父类引用指向子类的对象(前提)
2.把子类转换为父类,向上转型(丢失自己本来的方法,只能用父类的方法)
3.把父类转换为子类,向下转型;强制转换
4.方便方法的使用,减少重复代码