Java多态

多态是面向对象的三大特性之一,它允许父类引用指向子类对象,实现同一接口的不同行为。在Java中,实现多态需要继承、重写和向上转型。例如,篮球运动员欧文可以被视为人、篮球运动员和品牌代言人,体现多种形态。通过多态,我们可以创建通用代码处理不同对象,如NBA球星球衣销售案例,无需修改原有代码即可支持不同球星的球衣销售。
摘要由CSDN通过智能技术生成

多态的概述
1.多态 是继封装、继承之后,面向对象的第三大特性
2.多态是同一个行为具有多个不同表现形式或形态的能力。
3.多态就是同一个接口,使用不同的实例而执行不同操作。
4.日常生活中的事物也经常会体现出多种形态,比如NBA球星欧文,篮球运动员是人的一种,则欧文既是篮球运动员也是人,同时他也是耐克运动品牌的代言人等等,即出现了多种形态。
5.Java作为面向对象的语言,同样可以描述一个事物的多种形态。多态意味着父类型的变量可以引用子类型的对象。
6.方法可以在父类中定义而在子类中重写。 前提条件:必须有子父类关系。
多态的定义与使用格式
7.定义格式:父类类型 变量名=new 子类类型();
其中父类类型是声明类型,子类类型是实际类型。

多态的实现
1.实现条件
Java实现多态有三个必要条件:继承、重写、向上转型。

(1)继承:在多态中必须存在有继承关系的子类和父类。
(2)重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
(3)向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。

只有满足了上述三个条件,我们才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而达到执行不同的行为。

2.实现形式
(1)普通类多态定义的格式
父类 变量名 = new 子类();

 

    class Team {}
    class Wang extends Team {}
    //类的多态使用
Team xx = new Wang();

(2) 抽象类多态定义的格式

abstract class Team {
     public abstract void method();
}
class Wang extends Team {
	public void method(){
		System.out.println(“重写父类抽象方法”);
	}
}
//类的多态使用
Team xx = new Wang();

 (3)接口多态定义的格式

interface Team {
	public abstract void method();
}
class Wang implements Team {
	public void method(){
    	System.out.println(“重写接口抽象方法”);
	}
}
//接口的多态使用
Team xx = new Wang();

多态案例

以下通过NBA球星球衣销售的例子让你更加了解多态

package NBA;
//球星球衣接口
interface Basketballstar{
	String getName();
	int getPrice();
}
//欧文
class Irving implements Basketballstar{
	public String getName(){
		return "Irving";
	}
	public int getPrice(){
		return 409;
	}
}
//杜兰特
class Durant implements Basketballstar{
	public String getName(){
		return "Durant";
	}
	public int getPrice(){
		return 359;
	}
}
//球星球衣销售店
public class Store{
	private int money = 0;
	//每卖一件球衣
	public void sell(Basketballstar shirt){
		System.out.println("球星: " + shirt.getName() + "单价: " + shirt.getPrice());
		money += shirt.getPrice();
	}
	//总收入
	public int getMoney(){
		return money;
	}
	public static void main(String[] args){
		Store shop = new Store();
		shop.sell(new Irving());
		shop.sell(new Durant());
		System.out.println("总收入: " + shop.getMoney());
	}
}		

运行结果:

 

在上面这个例子中,只需让新定义的类实现Basketballstar类并实现它的所有方法,而无需对原有代码做任何修改。
继承是多态得以实现的基础,从字面上理解,多态就是一种(Basketballstar类型)表现出多种状态

相信借助这个例子,你会对多态有更多的理解

Java多态指的是同一个方法名可以根据不同的对象调用出不同的行为。具体来说,多态是一种面向对象编程的特性,实现多态的方式主要有两种:方法重载和方法覆盖。方法重载指的是在一个类中定义多个同名方法,但这些方法有不同的参数列表,编译器会根据参数列表的不同选择合适的方法进行调用。方法覆盖指的是子类重写父类的方法,使得在使用父类对象调用该方法时,实际调用的是子类中的方法。 多态的好处在于,它可以提高代码的灵活性和可扩展性。通过多态,我们可以为不同的对象提供不同的行为,从而使得程序更加具有扩展性。此外,多态还可以让程序的调用更加简洁、清晰,提高了代码的可读性和可维护性。 下面是一个简单的Java多态的例子: ```Java class Animal { public void makeSound() { System.out.println("动物发出声音"); } } class Cat extends Animal { public void makeSound() { System.out.println("猫发出“喵喵”的声音"); } } class Dog extends Animal { public void makeSound() { System.out.println("狗发出“汪汪”的声音"); } } public class PolymorphismExample { public static void main(String[] args) { Animal animal1 = new Animal(); Animal animal2 = new Cat(); Animal animal3 = new Dog(); animal1.makeSound(); // 动物发出声音 animal2.makeSound(); // 猫发出“喵喵”的声音 animal3.makeSound(); // 狗发出“汪汪”的声音 } } ``` 在上面的例子中,Animal是一个父类,Cat和Dog是Animal的子类。Animal类中定义了一个makeSound()方法,Cat和Dog类分别重写了这个方法。在main()方法中,我们创建了三个Animal类型的对象,并分别调用它们的makeSound()方法。由于animal2和animal3都是Animal类型的对象,但实际上它们分别是Cat和Dog类型的对象,因此在调用它们的makeSound()方法时,实际上是调用了它们各自的实现,也就是Cat类和Dog类中重写的makeSound()方法。这就是Java多态的表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值