java基础-多态

动态绑定是指“在执行期间(而非编译期)”判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。也叫多态。
有三个特征:有继承、有重写、父类引用指向子类
一、实例
本例,在学校里的体育上,所有女生都选择了打羽毛球,所有男生都选择了打篮球。
有继承:编写学生类,分别写girls类和boys类,继承学生类
有重写:三个类中均有Cource()方法,子类对父类的方法进行重写
父类引用指向子类:在teacher类中,传参为父类student类,实际传参为子类的实例。
在主函数中调用teacher类中的方法,在teacher类中的方法调用父类的方法。

class Student{
    public String name;

    public  void Cource(){
        this.name = name;
        System.out.println(this.name + "在学校");
    }
}

class girls extends Student{

     public void Cource(){
         System.out.println("在学习打羽毛球");
     }
}

class boys extends Student{
    public void Cource(){
        System.out.println("在学习打篮球");
    }
}

class teacher {
    public String name;
    public Student student;
    teacher(String  name, Student student){
        this.name =name;
        this.student = student;
    };
    public void myStudentStudying(){
        student.Cource();
    }
}
public class PolymorphTest {
    public static void main(String[] args) {
        girls g1 = new girls();
        boys b1 = new boys();

        teacher t1 = new teacher("Lily",g1);
        teacher t2 = new teacher("John",b1);
        t1.myStudentStudying();
        t2.myStudentStudying();
    }
}

运行结果:
在这里插入图片描述

二、内存分析
在这里插入图片描述

通过实例,可以看出,当使用 student.Cource();,在运行期间,先判断student的实际类型,在对应访问实际类型的Cource方法。
则如当新增一个类型C,只需增加子类C,改写相应的Cource即可,如下
class C extends Student{
public void Cource(){
System.out.println(“在学习java”);
}
}
增强了代码的可扩展性。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值