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虚拟机)决定目标方法

 

posted @ 2022-05-22 23:31  回忆也交给时间  阅读(42)  评论(0)    收藏  举报