关于java多态的一些简单介绍

多态的基本概念

面向对象程序设计的三大特征:
封装性、继承性、多态性。

因为类与类之间的继承,出现了类的上下层次关系,这种关系的产生就是多态性出现的前提

多态实现的三个必要条件:继承、方法重写、父类引用指向子类对象。

即,当一个父类被引用指向一个子类对象后,再调用子类中重写的方法,这时多态就出现了。

多态的主要用法

public class demo {
    public static void main(String[] args) {

    	People peo = new People();
    	peo.eat();

        People student = new Student();//向上转型
        student.eat();
        Student stu = (Student) student;
        stu.study();//向下转型 打印子类特有方法

        People tea = new Teacher();
        tea.eat(); 
        Teacher t=(Teacher)tea;
        //t.eat(); 
        t.teach();
    }
}
class People{
    public void eat(){
        System.out.println("人不能不吃饭");
    }
}
class Student extends People{
    @Override
    public void eat(){
        System.out.println("买饭吃");
    }
    public void study(){
        System.out.println("咱来一把");
    }
}
class Teacher extends People{
    @Override
    public void eat(){
        System.out.println("做饭吃");
    }
    public void teach(){
        System.out.println("开始上课");
    }
}

以上的样例创造了一个一个People类,以及Student和Teacher两个子类,其中eat方法是三个类中共有的,而这两个子类分别对这个方法进行了重写(@Override),使得eat方法在三个类中呈现出不同的效果,这就是程序的多态性。

多态的注意事项

动态绑定(dynamic binding)

方法可以在沿着继承链的多个类中实现,子类可以重写父类的方法。JVM决定运行时调用哪个方法。
即,如果程序需要调用方法p,虚拟机在运行时会从最亲近的类中寻找目标方法p,然后调用首先找到的实现。

向上转型和向下转型

向上转型:

本质父类的引用指向了子类的对象
语法父类类型 引用名 = new 子类类型();
特点1、编译类型看左边,运行类型看右边 2、可以调用父类中的所有成员(需要遵守访问权限)3、不能调用子类中的特有成员 4、最终运行效果看子类的具体实现

向下转型:

语法子类类型 引用名 = (子类类型);
特点1、只能强转父类的引用,不能强转父类的对象 2、要求父类的引用必须指向的是当前目标类型的对象 3、当向下转型后,可以调用子类类型中的所有成员
Object类

Object类是所有类的父类,何一个类时候如果没有明确的继承一个父类的话,那么它就是Object的子类。

成员的特点

由于实现多态的前提是继承,而在面向对象程序设计中,继承被用来创建类之间的“是”关系(is a),所以应用的成员要求是父类的特殊化。

PS:
多态成员变量:编译运行看左边
多态成员方法:编译看左边,运行看右边

多态的底层思想

简单来说,多态即为父类引用变量可以指向子类对象,这思想看似简单,却是面对对象的程序设计语言最重要的语法。

因为类的多态,程序模块间的关系更为简单,程序模块的独立性,数据的安全性就有了良好的保障。类的继承与多态性可以很方便地实现代码重用,大大提高了程序的可重用性,缩短了软件开发周期,并使软件风格统一。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值