java中多态的使用

多态的优点

1.消除类型之间的耦合关系
2.可替换性
3.可扩充性
4.接口性
5.灵活性
6.简化性

多态存在的三个必要条件

1.继承
2.重写
3.父类引用子类对象

instanceof关键字

可以通过instanceof关键字来判断某个对象是否属于某种数据类型。
多态中,编译是否通过看左边,运行看右边,当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译失败;如果有,再去调用子类中同名的方法,如果没有,则调用父类中的方法;如果需要调用子类特有的方法,则需要向下转型后再调用。

父类方法

public abstract class animal {
 public void work() {
  System.out.println("我要工作");
 }
 public abstract void eat();
 public void run() {
  System.out.println("我会跑");
 }
}

子类方法

public abstract class animal {
 public void work() {
  System.out.println("我要工作");
 }
 public abstract void eat();
 public void run() {
  System.out.println("我会跑");
 }
}

多态测试

public class testDemo{
  public static void main(String[] args){
  animal an = new cat();
  an.eat();
  an.work();
  an.run();
  
  cat bn = (cat)an;
  bn.catchFish();
  bn.work();
  bn.run; 
}
}

运行结果:

吃
我要工作
猫会跑
我会抓鱼
我要工作
猫会跑
Java 多态性是指同一个方法调用会根据对象类型的不同而具有不同的行为。多态性主要有两种表现形式:覆盖和重载。 覆盖(Override)是指在子类定义一个与父类同名、同参数列表的方法,这个子类的方法会覆盖父类的方法。当父类引用指向子类对象时,调用该方法时会优先调用子类的方法。 重载(Overload)是指在一个类定义多个方法,它们具有相同的方法名但参数列表不同。编译器会根据参数列表的不同来选择相应的方法。 下面是一个使用多态的例子: ``` class Animal { public void makeSound() { System.out.println("The animal makes a sound"); } } class Dog extends Animal { public void makeSound() { System.out.println("The dog barks"); } } class Cat extends Animal { public void makeSound() { System.out.println("The cat meows"); } } public class Main { public static void main(String[] args) { Animal a = new Animal(); // Animal reference and object Animal b = new Dog(); // Animal reference but Dog object Animal c = new Cat(); // Animal reference but Cat object a.makeSound(); // runs the method in Animal class b.makeSound(); // runs the method in Dog class c.makeSound(); // runs the method in Cat class } } ``` 输出结果为: ``` The animal makes a sound The dog barks The cat meows ``` 在这个例子,Animal 是一个父类,Dog 和 Cat 是它的子类。Animal 类的 makeSound() 方法被子类重写了,当父类引用指向子类对象时,调用该方法时会优先调用子类的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值