多态

父类的方法可以被子类重写,重写之后再调用该方法,就会按照重写后的那个方法体运行。
而实行类中,父类不能调用子类独有的方法
一个对象的实际类型是确定的,比如——new Student(),new Person()
可以指向的引用类型就不确定了,比如父类的引用指向子类
Student可以调用的方法都是自己独有的或者继承父类的
示例:父类不能调用子类独有的方法:

public class Person {
public void run(){
System.out.println("run");
}
}

public class Student extends Person {
public void run(){
System.out.println("drump");
}
public void swim(){
System.out.println("swimming");
}
}

public class Application {
public static void main(String[] args){
//一个对象的实际类型是确定的
//new Student();
//new Person();
//可以指向的引用类型就不确定了:父类的引用指向子类(其实就是父类调用子类重写的方法)
//Student 能调用的方法都是自己的或者继承父类的。
Student s1=new Student();
Person s2=new Student();//父类型可以指向子类,但父类不能调用子类里面独有的方法,会报错
Object s3=new Student();
s1.run();
s1.swim();
s2.run();
//s2.swim();//父类不能调用子类里面独有的方法,会报错
//Student可以调用的方法都是自己独有的或者继承父类的
// student.test1();
//对象能执行哪些方法,主要看对象左边的类型,与右边关系不大。
((Student) s2).swim();//强制转换,将Person类型强制转换成了Student类型,高转低,用到了强制类型转换。
}
}
运行结果:
drump
swimming
drump
Process finished with exit code 0
总结:
1.同一方法可以根据发送对象的不同而采取多种不同的行为方式
2.多态存在的条件(可以重写的条件):
有继承关系
子类重写父类方法
父类引用指向子类
3.注意:多态是方法的多态,跟属性没有关系
4.多态不存在的条件(不允许重写的条件):
static
final常量
private方法

posted @ 2025-04-02 23:52  骆驼刺破仙人掌007  阅读(13)  评论(0)    收藏  举报