Java三大特征-------多态

本文详细介绍了Java中的多态性概念及其实现方式。通过具体的代码示例解释了多态性的三个必要条件:继承、方法重写及父类引用指向子类对象。此外,还提供了一道练习题来帮助读者理解多态性的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java三大特征——-多态

多态性是OOP编程中的一个重要特性,程序的最终状态只有执行过程中才会被执行而非编译期间就决定了,这提高了系统的灵活性和扩展性。
在java中如何实现多态,就是在编译的时候类型模糊一点,而在运行时类型具体到子类。多态实现是三个条件,要有继承,要有方法重写,父类的引用指向子类的对象。下面附上代码
public class TestPoly2 {
    public static void main(String[] args) {
        Food food = new Kfc();
        Food food2 = new Lucai();
        Food food3 = new MaoJiaCai();
        cook(food);
    }
    //在编译该方法的时候,类型模糊一点,使用父类,在上面使用到的时候父类的引用指向子类的对象
    public static void cook(Food food) {
        food.show();
    }
}
class Food {
    public void show() {
        System.out.println("Food.show(我包括八大菜系)");
    }
}
class Chuancai extends Food {
    @Override
    public void show() {
        System.out.println("鱼香肉丝");
    }
}
class Kfc extends Food {
    @Override
    public void show() {
        System.out.println("全家桶");
    }
    public void gogogo() {
        System.out.println("Kfc.gogogo(今天有优惠券)");
    }
}
class Lucai extends Food {
    @Override
    public void show() {
        System.out.println("煎饼卷大葱");
    }
}

下面是一道练习题,练习一下,对继承的理解

public class TsetAbc {
    public static void main(String[] args) {
    /*
        a1里能够使用的函数只有show(D obj)和show(A obj)
        a2里能够使用的函数只有show(D obj)和B类里面重写的show()
        b里能够使用的函数只有show(D obj)和B类里面包含的两个方法

    */
        A a1 = new A();
        A a2 = new B();
        B b = new B();
        C c = new C();
        D d = new D();
        System.out.println("1" + a1.show(b));//输出的是AA
        System.out.println("2" + a1.show(c));//输出的是AA
        System.out.println("3" + a1.show(d));//输出的是AD
        System.out.println("4" + a2.show(b));//输出的是BA
        System.out.println("5" + a2.show(c));//输出的是BA
        System.out.println("6" + a2.show(d));//输出的是AD
        System.out.println("7" + b.show(b));//输出的是BB
        System.out.println("8" + b.show(c));//输出的是BB
        System.out.println("9" + b.show(d));//输出的是AD
    }

}
class A{
    public String show(D obj) {
        return ("A and D");
    }

    public String show(A obj) {
        return ("A and A");
    }
}

class B extends A {
    public String show(B obj) {
        return ("B and B");
    }

    @Override
    public String show(A obj) {
        return ("B and A");
    }
}

class C extends B {

}

class D extends B {

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值