Java多态的理解

/*父类*/

public class People { 
public    void    goToSchool() {
        System.out.println("父类的方法");   
  }

}

/*子类1*/

public class Student extends People {
   @Override
    public void  goToSchool() {
        System.out.println("子类重写父类的方法“+“    学生骑自行车去学校");
    }
}

/*子类2*/

public class Teacher extends People {
   @Override
    public void goToSchool() {
        System.out.println("子类重写父类的方法"+ "   老师开车去学校");
    }
}

/*测试类*/

public class Test {
    public static void main(String[] args) {
        People fu=new Student();//父类引用指向子类     
        fu.method();//调用该方法控制台显示    子类重写父类的方法    学生

        fu=new Teacher();

       fu.method();//调用该方法控制台显示    子类重写父类的方法    老师
    }
}

条件: 

一、有继承。extends

  二、父类引用指向子类。People  people=new Student();

多态:官方解释:同一个行为具有多个不同形态的表现形式。

代码解释:就是父类的一个方法,被多个子类重写。

父类的同一个行为动作(去学校)有两种子类重写后的方法去实现。

子类一      学生骑自行车去学校。

子类二     老师开车去学校。

二、调用方法规则。

People  people=new Student();

people.method();

编译会检查左边父类引用(People people),如果左边父类中没有method()方法,则会编译报错。

运行检查右边实例化的对象(new Student()),先去子类中查找是否有method()方法,如果没有就去父类中找method方法。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值