java学习笔记(多态)

什么是多态

  • 多态是指同一个行为具有多个不同表现形式和形态的能力
  • 多态是同一个接口,使用不同的实例而完成不同的操作
public class People {
     public void talk(){
         System.out.println("I'm a Human!!");
     }
}
public class Students extends People{
    public void talk(){
        System.out.println("I'm a Student!!");
    }
}
public class TestInherit {
    public static void main(String[] args) {
        People s1 = new Students();	//父类的引用指向子类
        Students s2 = new Students();

        s1.talk();
        s2.talk();

        People people = new People();
        people.talk();
    }
}
I'm a Student!!
I'm a Student!!
I'm a Human!!
  • 一个对象的实际类型(eg:People s1 = new Students())是确定的,但是它的引用类型(eg:People s1 = new Students())是不确定的。比如上方代码中,s1和s2的实际类型都是Students,而s1的引用类型是People,而s2的引用类型是Students。
  • 这里的引用类型People和Students就是对象所表现出来的多态

注意事项

  • 多态是方法的多态,属性没有多态
  • 多态的转换(引用类型的转换)间,必须要有继承关系,否则会报类型转换异常(ClassCastException),比如下图中,我们重写一个Teacher类也继承People类,但是它与Students类没有继承关系,因此会报错。

在这里插入图片描述

  • 子类型(Students s2 = new Students())能调用的方法都是自己的或者继承父类的
  • 父类型(People s1 = new Students())在指向子类时,只能调用父类自己的或者子类和父类都有的方法(重写的方法),不能调用子类独有的方法。下图中祖类Object指向Students类,但是Object类中没有talk这个方法,所以不能调用该方法。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值