java多态
发布日期:2022-03-03 01:57:21 浏览次数:1 分类:技术文章

本文共 3431 字,大约阅读时间需要 11 分钟。

面向对象特征:抽象、封装、继承、多态

目录


多态:

(英语:polymorphism)指为不同的实体提供统一的。                                                Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。

    多态体现为:父类引用变量可以指向子类对象。

     前提条件:必须有继承关系。

    注意:在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。

实现多态的三种方法:

1.方法的重写

 

 

2.继承父类

public class Father {}public class Son extends Father{}public class TestSon {    public static void main(String[] args) {//        Father father = new Father();//        Son son = new Son();        //下面这行就称为多态(父类的引用指向了子类的对象)        //通俗记忆小的赋值给大的//         father = son;         //下面这行称为强制类型转换//         son = (Son)father;        //多态的简写形式        Father father = new Son();    }}public class Grandma extends Object {}public class Mom extends Grandma{}public class Daughter extends Mom{}public class TestDaughter {    public static void main(String[] args) {        //把小的赋值给大的称为向上转型//        Grandma grandma = new Daughter();        //把小的赋值给大的称为向上转型//        Mom mom = new Daughter();        //把大的赋值给小的就称为向下类型转换//        Daughter daughter = (Daughter) grandma;        //把大的赋值给小的就称为向下类型转换//        Daughter daughter2 = (Daughter) mom;        //向下类型转换之前必须得先向上类型转换        //如果不向上类型转换,直接向下类型转换会报错        //ClassCastException类转换异常//        Daughter daughter = (Daughter) new Grandma();        //因为Object是最大的类可以接收一切对象        Object obj = new Grandma();        Object obj2 = new Mom();        Object obj3 = new Daughter();    }}

3.实现抽象类、抽方法

//定义抽象类public abstract class Animal {    public static final String RACE = "动物";    private String name;    private Integer age;    private String sex;    /**抽象方法*/    public abstract void sleep(Integer time);    public abstract String loveFoods(String foods);    /**普通方法*/    public void run(){        System.out.println("跑");    }    public void eat(){        System.out.println("吃");    }    /**构造器*/    public Animal(String name, Integer age, String sex) {        this.name = name;        this.age = age;        this.sex = sex;    }    public static String getRACE() {        return RACE;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }}
//定义抽象类子类public class AnimalImpl extends Animal {    private String color;    @Override    public void sleep(Integer time) {        System.out.println("睡眠"+time+"小时");    }    @Override    public String loveFoods(String foods) {        return "喜欢吃"+foods;    }    /**     * 构造器     *     * @param name     * @param age     * @param sex     */    public AnimalImpl(String name, Integer age, String sex,String color) {        super(name, age, sex);        this.color=color;    }}
//抽类、抽象方法实现多态public class AnimalImplTest {    public static void main(String[] args) {//        匿名对象类        Animal animal = new Animal("狗",2,"nan") {            @Override            public void sleep(Integer time) {            }            @Override            public String loveFoods(String foods) {                return null;            }        };        Animal animal1 = new AnimalImpl("猫",2,"女", "橘黄色");        animal.eat();        animal.run();        animal1.run();        animal1.eat();        animal1.loveFoods("鱼");        animal.loveFoods("肉");        String race = Animal.RACE;        System.out.println(race);    }

转载地址:https://blog.csdn.net/qq_52807480/article/details/119835273 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:AOP面向切面编程
下一篇:Spring Boot

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月15日 23时54分04秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章