多态

  • 多态:
    这里写图片描述
  • 多态成员特点
package myPolymorphism;
/*
 * 多态的成员特点:
 *      成员变量:编译时看左边,运行时看左边
 *      成员方法:编译时看左边,运行时看右边
 *      静态方法:编译时看左边,运行时看左边
 */
public class PolymorphismDemo2 {
    public static void main(String[] args) {
        Dad d = new Son();
        int num = d.num;
        System.out.println(num);
        d.show();
        d.stat();//使用变量调用静态方法,其实相当于变量类型的类去调用
    }
}

class Dad {
    int num = 10;
    public void show() {
        System.out.println("我是父类成员方法");
    }

    public static void stat() {
        System.out.println("我是父类静态方法");
    }
}

class Son extends Dad {
    int num = 20;
    public void show() {
        System.out.println("我是子类成员方法");
    }

    public static void stat() {
        System.out.println("我是子类静态方法");
    }
}

结果:
    10
    我是子类成员方法
    我是父类静态方法
  • 多态的向上和向下转型
    这里写图片描述
package myPolymorphism;
/*
 * 多态的向上和向下转型
 */
public class PolymorphismDemo3 {
    public static void main(String[] args) {
        //向上转型
        Animals a = new Dog();
        a.eat();

        //向下转型,swim()是父类没有而子类Dog有的成员方法
        Dog d = (Dog)a;
        d.swim();
    }
}

class Animals {
    public void eat() {
        System.out.println("吃东西");
    }
}

class Dog extends Animals {
    public void eat() {
        System.out.println("啃骨头");
    }

    public void swim() {
        System.out.println("狗刨");
    }
}
package myPolymorphism;

public class PolymorphismDemo5 {
    public static void main(String[] args) {
        Factory1 fac = new Factory1();
        fac.creatPhone(new MiNote1());
        fac.creatPhone(new RedMi1());
    }
}

//生产类
class Factory1 {
    public void creatPhone(RedMi1 redMi1) {
        redMi1.call();
    }

    public void creatPhone(MiNote1 miNote1) {
        miNote1.call();

    }
}

//小米类
class MiNote1 {
    public void call() {
        System.out.println("小米Note打电话");
    }
}
//红米类
class RedMi1 {
    public void call() {
        System.out.println("红米打电话");
    }
}
package myPolymorphism;

public class PolymorphismDemo4 {
    public static void main(String[] args) {
        Factory fac = new Factory();
        fac.creatPhone(new MiNote());
        fac.creatPhone(new RedMi());
    }
}

//生产类
class Factory {
    public void creatPhone(Phone p) {
        p.call();
    }
}
//接口,实现call()方法
interface Phone {
    public void call();
}
//小米类
class MiNote implements Phone {
    public void call() {
        System.out.println("小米Note打电话");
    }
}
//红米类
class RedMi implements Phone {
    public void call() {
        System.out.println("红米打电话");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值