Java的特性详解-多态

多态的定义

对象在不同时刻表现出来的不同状态。

多态的注意事项

  • 一定不能够将父类的对象转换成子类类型。
  • 多态自始至终都是子类对象在变化。
  • 父类的引用指向子类对象,该引用可以被提升,也可以被强制转换。

重写与重载

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

重写遵循以下规则:

  • 参数列表必须完全和被重写方法的参数列表一致。
  • 返回类型必须完全和被重写方法的返回类型一致。
  • 访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)。
  • 重写的方法一定不能抛出新的检查异常或者比被重写方法声明更加宽泛的检测型异常。

重载的注意事项:

  • 在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样)。
  • 各个重载方法的参数列表必须不同。
  • 各个重载方法的返回值类型可以相同也可以不同,但是仅仅返回值类型不同的不是重载。
  • 不能通过仅仅通过访问权限、返回类型、抛出的异常的不同而进行重载

不同修饰符修饰的内容

类       成员变量   成员方法        构造方法

private                Y          Y            Y
default       Y        Y          Y            Y
protected              Y          Y            Y
public        Y        Y          Y            Y
abstract      Y                   Y  
static                 Y          Y            Y
final         Y        Y          Y

注意,常见规则如下:

  • 以后,所有的类都用public修饰。并且,在一个java文件中,只写一个类。
  • 以后,所有的成员变量用private修饰。
  • 以后,所有的成员方法用public修饰。
  • 如果是抽象类或者接口:public abstract + …
  • 以后,所有的构造方法用public修饰。
  • 如果类是工具类或者单例类:构造用private修饰

Java的多态性是指通过一个父类的引用变量来引用不同子类的对象,并根据具体对象的类型来调用相应的方法。多态性是面向对象编程的重要特征,它提供了代码的灵活性、可扩展性和可维护性。

在Java中,实现多态性的关键是通过继承和方法的重写。假设有一个父类Animal和两个子类Dog和Cat,它们都继承自Animal类。我们可以定义一个Animal类型的引用变量,并根据具体需要赋予不同的子类对象,如下所示:

Animal animal1 = new Dog(); 
Animal animal2 = new Cat();

通过将子类对象赋值给父类引用变量,我们可以实现多态性。这样,无论是animal1调用的方法还是animal2调用的方法,在运行时都会根据具体子类对象的类型来选择正确的方法。

例如,假设Animal类中有一个名为makeSound的方法,而Dog和Cat类都重写了这个方法并分别实现了吠叫和喵叫的功能。通过调用animal1.makeSound()和animal2.makeSound(),即使animal1和animal2的类型是Animal,但实际上会分别调用Dog和Cat类中的makeSound方法,产生吠叫和喵叫的声音。

这种多态性的好处是可以写出更通用的代码,并且减少代码的重复。当新增子类时,只需要重写相应的方法,而不需要修改已有的代码。同时,多态性还提供了代码的可扩展性,可以方便地增加新的子类来扩展功能。

总结来说,Java的多态性允许使用父类类型的引用变量来引用不同子类的对象,并根据对象的类型来调用相应的方法,提供了代码的灵活性、可扩展性和可维护性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值