专业的JAVA编程教程与资源

网站首页 > java教程 正文

如何正确认识Java多态(怎么理解java多态)

temp10 2024-09-27 22:54:30 java教程 9 ℃ 0 评论

多态在Java技术具有很重要的位置,在Java面试中是必问的知识点,那我们如何正确的认识和理解多态呢?

多态的理解

所谓多态,就是指同一个行为具有多个不同表现形式或形态的能力。也可以理解为,多态是指通过指向父类的指针,来调用在不同子类中实现的方法。

如何正确认识Java多态(怎么理解java多态)

多态存在的必要条件

  1. 继承
  2. 重写
  3. 父类引用指向子类对象(即向上转行)

例如:

 Parent p = new Child();

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的实现方式

1、重写父类方法

父类和继承该父类的一个或多个子类对某些方法的重写,多个子类对同一方法的重写可以表现出不同的行为

例如:

class Animal {
	public void eat() {
		System.out.println("动物吃饭");
	}
}
class Cat extends Animal {
	//重写父类方法
	public void eat() {
		System.out.println("猫吃饭");
	}
}
class Demo_Test1 {
	public static void main(String[] args) {
		Animal am = new Cat();
		am.eat();//打印“猫吃饭”
	}
}

2、接口实现

interface Animal1 {
	public void eat();
}
class Pig implements Animal1 {
	//实现父类
	@Override
	public void eat() {
		System.out.println("猪吃饭");
	}
}
class Dog implements Animal1 {
	//实现父类
	@Override
	public void eat() {
		System.out.println("狗吃饭");
	}
}
public class Demo_Test2 {
	public static void main(String[] args) {
		Animal1 am = new Pig();
		am.eat();//打印“猪吃饭”
		Animal1 am1 = new Dog();
		am1.eat();//打印“狗吃饭”
	}
}

3、实现抽象类的抽象方法

abstract class Animal1 {
	
	public abstract void eat();
	
	public void play() {
		System.out.println("动物在玩");
	}
}
class Pig extends Animal1 {
	//实现父类抽象方法
	public void eat() {
		System.out.println("猪吃饭");
	}
	//重写父类方法
	public void play() {
		System.out.println("猪在玩");
	}
}
public class Demo_Test2 {
	public static void main(String[] args) {
		Animal1 am = new Pig();
		am.eat();//打印“猪吃饭”
		am.play();//打印“猪在玩”
	}
}

后记:很多人认为重载属于多态,我个人不认同这个观点,重载是指方法名相同,参数不同的多个方法,这叫重载,重载首先和继承没有任何关系,更不涉及到覆盖父类的属性或者方法,也和父类动态的去引用子类对象没有任何关系,所以说,重载不是多态!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表