java 面向对象 多态

import java.util.ArrayList;


class A1{
  public void fun1() {
    System.out.println("方法一");
  }
  
  public void fun2() { //他可以去调用子类的方法1
    System.out.println("方法2");
    fun1();
  }
}


class B1 extends A1{
  public void fun1(){
    System.out.println("重写A1的方法1");
  }
  public void fun3(){
    System.out.println("33333");
    
  }
}


public class Test {
  public static void main(String[] args) {
    A1 a  = new B1();//子类能自动的转换成父类
    callA(a);
  }
  
  //编译器自动将 类B1转换成A1类型
  public static void callA(A1 a1){
    a1.fun1();//其实他还是调用的b1中的方法   这就是多态  这里只要传入A1的子类就行  以不变应万变 达到代码 的复用性   可扩充性 可维护性   模块化可插拔
    //派生类的功能可以被基类所引用 这叫向后兼容
    a1.fun2();//因为b1子类中没有覆盖a1中的fun2方法  那么久只能通过子类 调用父类a1的fun2   fun2又调用了fun1
 fun1 又被子类重写了 所以就执行的是子类的fun1   以后写的程序可以被现在的程序调用
  }
  
  

}


打印结果:

重写A1的方法1
方法2
重写A1的方法1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值