Java学习之路【220425-220426】——多态1


一、方法的多态

方法的多态,在之前我们学到的方法重载、方法重写,这两个都体现了方法的多态

1.例子

//测试类
public class test{
	public static void main(String[]args){
		A a = new A();
		a.sum(1.1 ,5 );//此时调用的方法是A中的第一个方法
		a.sum(5 ,1.1 );//此时调用的方法是A中的第二个方法

		B b = new B();
		a.total();
		b.total();//不同的对象调用的total方法是不一样的
	}
}
class A{
	//方法的重载
	public void sum(int n1, double n2){
		System.out.println("sum = int n1 + double n2 ");
	}
	public void sum(double n1, int n2){
		System.out.println("sum = double n1 + int n2 ");
	}

	//方法重写
	public void total(){
		System.out.println("A的total被调用");
	}
}
class B extends A{
	//方法重写
	public void total(){
		System.out.println("B的total被调用");
	}	
}

2.总结

从上面的代码,我们看出,一个方法有不同种的形态,这就是多态的一种体现


二、对象的多态

对象的多态将会会涉及到大量的封装和继承关系,对这两个知识点不清楚的同学,可以看我以往的文章,有进行相应的解释

1.编译类型和运行类型

语法

 编译类型 对象引用名 = new 运行类型();

在我们进行创建对象的时候,我们都会用到new语句,在new语句 “ = ” 的左边的类型就是编译类型,“ = ” 的右边就是运行类型

那我们现在知道了什么是编译类型和运行类型
那它有什么用呢?

让我细细为你道来

首先当我们的代码中有 父类 和 子类 存在的时候,我们创建对象可以这么创建

Animal animal = new Dog();

此时的编译类型是Animal,运行类型是Dog
这么创建对象有个好处就是
animal 这个对象引用可以调用 父类Animal 的所有方法(重写方法可以)
缺点就是 不能调用 子类Dog 的独有方法

使用animal.cry(),jvm会按照运行类型Dog,匹配到Dog类的cry()方法并调用

❗️注意

  1. 一个对象的编译类型和运行类型可以不一致
    Animal animal = new Dog();
    Animal animal = new Animal();
  2. 一定要记得的是,编译类型在对象创建的时候就确定了,不能更改;运行类型是可以改变的

2.总结

一个父类的对象引用可以指向子类的对象,运行时是以“运行类型”为主


在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云来喜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值