多态
1.什么是多态呢? 即同一种方法可以根据发送对象的不同而采用多种不同的行为方式。
2.一个方法的实际类型是确实的,但可以指向对象的引用类型有很多种。
多态存在的条件:
1.存在继承关系
2.子类重写父类的方法
3.父类引用指向子类对象
1.父类
//创建一个简单父类
public class Person {
public void text(){
System.out.println("person");
}
}
2.子类
//创建简单子类
public class Student extends Person{
@Override
public void text() {
System.out.println("son");//方法的重写
}
//创建子类独有的函数
public void eat(){
System.out.println("eat");
}
}
3.main函数
public static void main(String[] args) {
//Student 子类能调用的方法都是自身的方法或者父类的方法
Student s1 = new Student();
//Person 父类能指向子类,但不能调用子类独有的方法
Person s2 = new Student();//父类的引用指向子类
Object s3 = new Student();//Object是类里面级别最高的类
s1.text();
s2.text();//子类重写父类的方法,执行子类的方法
s1.eat();
//父类不能引用子类独有的方法
((Student)s2).eat();//类型转换,如果没有进行类型转换则会报错
}
运行结果:
总结多态的注意事项
1.多态是方法的多态,属性没有多态
2.父类和子类,有关系,类型转换异常!ClassCastException
3.存在条件:继承关系,方法需要重写,父类引用指向子类对象!
不能被重写的例子
4.static方法,属于类,不属于实例,
5.final 常量
6.private方法