java基础知识--多态

本人的GitHub:戳我一下

多态,也被称为动态绑定,运行时绑定,后期绑定,我在看马士兵老师的视频时,听他讲到过一句话,我感觉这句话总结了多态的特性,这句话是“父类引用指向子类对象”,多态就是通过父类引用指向子类对象,通过父类的引用,调用子类的方法。
首先先谈谈向上转型和向下转型,我们都知道子类包含父类的所有域和方法,所以一个子类对象可以作为父类的对象使用,通过父类的引用访问子类的方法和域就是向上转型,而向下转型则是把一个父类的引用转换成子类的引用,这是不安全的。向上转型是安全的,因为子类包含了父类,但是向下转型无法确定父类引用指向的对象是子类的对象,因此我们必须确保正确运用向下转型。
下面举个例子说明多态:

class Shape {
    public void draw() {
        Sysout.println("I am Shape");
    }
}
class Circle extends Shape {
    public void draw() {
        Sysout.println("I am Circle");
    }
}
class Square extends Shape {
    public void draw() {
        Sysout.println("I am Square");
    }
}
class Test {
    public static void main(String[] args) {
        Circle c = new Circle();
        Square d = new Square();
        Shape e = new Shape();
        test(c);//c是Circle类的引用,Circle类是Shape类的子类
        test(d);//同上
        test(e);
    }
    public void test(Shape s) {//注意参数是Shape类的引用
        s.draw();
    }
}

输出:

I am Circle
I am Square
I am Shape

注意:静态方法不具有多态性.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值