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

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

文章目录
  • 一、方法的多态
    • 1.例子
    • 2.总结
  • 二、对象的多态
    • 1.编译类型和运行类型
      • 语法
    • 2.总结


一、方法的多态

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

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.总结

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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/790036.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-05
下一篇2022-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存