Java_基础_多态

概念

    即同一方法可以根据发送对象的不同而采用多种不同的行为方式。

注意事项

    1.多态是方法的多态,属性没有多态。
    2.父类和子类之间转型有可能会发生类型转换异常:ClassCastException。
    3.多态的存在条件是继承关系,当子类与父类拥有相同方法时,子类的方法需要重写,父类引用(new对象)
      时指向子类对象,即会调用子类的方法。
    3.多态不适用情况:
    (1)static关键字,static属于类,不属于实例
    (2)final关键字
    (3)private关键字

代码说明

    建立三个类。一个测试main主类Application、父类Person、子类Student。

代码实例

Application类

public class Application {
    public static void main(String[] args) {

        //一个对象的实际类型是确定的,但可以指向的引用类型就不确定:父类的引用指向子类
        //Student能调用的方法都是自己的着继承父类的
        Student s1 = new Student();
        //Person父类型,可以指向子类,但是不能调用子类独有的方法,当子类与父类拥有相同方法时,
        // 子类的方法需要重写,父类引用(new对象)时指向子类对象,即会调用子类的方法。
        Person s2=new Student();

        s1.run();
        s2.run();//会执行子类的方法

        System.out.println("分割线=================");

        //对象执行那些方法,主要看对象左边的类型,和右边关系不大
        s1.eat();
        ((Student)s2).eat();//想要执行子类的方法,必须利用强制类型转换向下转型


    }
}


 
Person类

public class Person {

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


Student类

public class Student extends Person{
    @Override
    public void run(){
        System.out.println("Student run()");
    }

    public void eat(){
        System.out.println("Student eat()");
    }

}

结果展示

备注:资料参考均来自B站up:遇见狂神说

猜你喜欢

转载自blog.csdn.net/ljlCSDNnumber/article/details/112851069
今日推荐