代码改变世界

Day28多态

2022-08-31 22:09  rebirthhhh  阅读(6)  评论(0编辑  收藏  举报

多态

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

一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。

多态存在的条件

  1. 有继承关系
  2. 子类重写父类方法
  3. 父类引用指向子类对象

注意:多态是方法的多态,属性没有多态

instanceof

package oop.demo;

public class Per {

    public void run(){

    }
}

package oop.demo;

public class Stu extends Per{
    @Override
    public void run() {
        System.out.println("son");
    }

    public void eat(){
    }
}

package oop;


import oop.demo.Per;
import oop.demo.Stu;

public class Application {

    public static void main(String[] args) {
        //一个对象的实际类型是确定的
        //可以指向的引用类型就不确定了

        //对象能执行哪些方法,主要看对象左边的类型,和右边关系不大
        Stu s1 = new Stu();
        Per s2 = new Stu();//父类的引用指向子类
        Object s3 = new Stu();

        //子类能调用的方法都是自己的或者继承父类的

        s2.run(); //子类重写了父类的方法,执行子类的方法
        s1.run();
        //父类可以指向子类,但是不能调用子类独有的方法
        ((Stu) s2).eat();
        s1.eat();

    }
}

子类重写父类的方法,执行子类。

是哪个类型,执行哪个的,两个都有时,执行子类的。

多态注意事项:

1.多态是方法的多态,属性没有多态

2.父类和子类,有联系 类型转换异常!ClassCastException!

3.多态存在条件:继承关系,方法需要重写,父类引用指向子类对象。father f1 = new son();

哪些方法不能被重写:

1.static 静态方法,属于类,它不属于实例

2.final 常量

3.private 方法 私有的