java 中的多态polymorphism

本文详细介绍了Java中对象的创建过程,包括声明、创建和赋值三个步骤,并解释了如何利用多态特性进行对象赋值。此外,还深入探讨了方法覆盖的规则,包括参数匹配、返回类型兼容及存取权限的要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象的声明,创建与赋值的3个步骤
Dog myDognew Dog();
1 对象一个引用变量,要求java虚拟机分配空间给引用变量并将此引用变量命名为myDog此引用变量将永远固定为Dog类型
Dog myDog

2 创建对象
new Dog();

3 连接对象和引用

重点在与引用类型与对象的类型必须是相符,在多态下面引用与对象可以是不同的类型假设Animal  Dog类继承了Animal

Animal myDog=new Dog();
运用多态的时候引用类型可以是实际对象类型的父类参数和返回类型也可以是多态。

方法覆盖的规则
方法就是合约的标志
1 参数必须要一样,且返回类型必须要求兼容
2 不能降低方法的存取权限

public class Monster {
 boolean frighten(int d){
  System.out.print("a");
  return true;
 }
}
public class Vampire extends Monster {
 boolean frighten(int x){
  System.out.print("b");
  return false;
 }
}
这段代码是对的,符合
1 参数必须要一样,且返回类型必须要求兼容
2 不降低方法的存取权限

public class Monster {
 boolean frighten(int d){
  System.out.print("a");
  return true;
 }
}
public class Vampire extends Monster {
 int  frighten(int x){
  System.out.print("b");
  return 1;
 }

}
这段返回类型不一致,java不能编译通过
The return type is incompatible with Monster.frighten(int)

public class Monster {
 boolean frighten(int d){
  System.out.print("a");
  return true;
 }
 public static void main(String []args){
  Monster vampire =new Vampire();
  byte i=1;
  vampire.frighten(i);
 }

}

public class Vampire extends Monster {
 boolean frighten(byte x){
  System.out.print("b");
  return false;
 }

}
由于Vampire类的方法frighten()没有实现覆盖所以
vampire.frighten(i); 调用的是父类Monster的 boolean frighten(int d)方法。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值