java.多态
package Demo.oop.APP.Demo05;
public class application {
public static void main(String[] args) {
//一个对象的实际类型是确定的
//可以指向的引用的类型就不确定了:父类指向子类
//子类调用的只能是自己的或继承父类的
Student s1=new Student();
Person s2=new Student();
Object s3=new Student();
//对象能执行那些方法主要看左边和右边关系不大
//子类如果重写了父类的方法,就执行子类的,否则执行父类的
}
}
/**
* 注意事项:
* 1.多态是方法的多态,属性没有多态
* 2.父类和子类一定要有联系,否则就会出现类型转换异常
* 3.存在关系,继承关系,方法需要重写,父类的引用指向子类
*没有多态的情况
* 1.static方法,属于类,不属于实例
* 2.fina:常量
* 3.private方法
*/
package Demo.oop.APP.Demo05;
public class Person {
public void run(){
System.out.println("run");
}
}
package Demo.oop.APP.Demo05;
public class Student extends Person{
@Override
public void run(){
System.out.println("son");
}
public void eat(){
System.out.println("eat");
}
}
多态可以分成两种情况,一种编译时多态,另一种是运行时多态
编译时多态:
1.编译期间就确定了目标方法
2.通过overloading重载实现
3.方法名相同,参数不同,参数类型不同
运行时多态:
1.运行期间决定目标方法
2.同名同参
3.overriding和继承实现
4.JVM(java虚拟机)决定目标方法





浙公网安备 33010602011771号