蜂信物联FastBee平台https://gitee.com/beecue/fastbee

阿里资料开源项目https://gitee.com/vip204888

百度低代码前端框架https://gitee.com/baidu/amis

OpenHarmony开源项目https://gitcode.com/openharmony

仓颉编程语言开放项目https://gitcode.com/Cangjie


package TEXT01;



/*

    测试类

 */



public class Demo {

    public static void main(String[] args) {

        Animal cat = new Cat();

        //编译的话编译Animal,运行的话则运行Cat, 如果Cat中没有这方法, 则在Animal中找

        cat.eat();

//        cat.play();   

		//Animal对象中并无play方法,所以编译不通过,因此不能调用play方法

    }

}



在这里插入图片描述

三、多态中成员访问特点

==============================================================================

  • 成员变量:编译看左边, 执行看左边
  • 成员方法:编译看左边, 执行看右边

为什么成员变量和成员方法的访问不一样呢?

  • 因为成员方法有重写, 而成员变量没有

四、多态中成员访问特点案例演示


下面展示一些 猫对象代码


package TEXT01;



public class Cat extends Animal {

    public int age = 188;//定义猫的年龄

    public int weight = 200;//定义猫的体重

    @Override

    public void eat() {

        System.out.println("猫吃鱼");

    }



    public void play(){

        System.out.println("和小狗玩");

    }

}



下面展示一些 动物对象代码


package TEXT01;



public class Animal {

    public int age = 40;//定义动物的年龄

    public void eat(){

        System.out.println("吃东西");

    }

}



下面展示一些 测试类代码


package TEXT01;



/*

    测试类

 */



public class Demo {

    public static void main(String[] args) {

        Animal cat = new Cat();

        //编译的话编译Animal,运行的话则运行Cat, 如果Cat中没有这方法, 则在Animal中找

        cat.eat();

//        cat.play();   //Animal对象中并无play方法,所以编译不通过,因此不能调用play方法

        System.out.println(cat.age);

        //访问的成员变量是父类的

//        System.out.println(cat.weight);

		//报错,因为父类中没有weight这个成员变量

    }

}



在这里插入图片描述

在访问成员变量中,可以看到是访问的是父类中的age,并将父类中的age输出出来,这是为什么呢?

原因是Animal cat = new Cat(); , 虽然对象是Cat类型,但是在外界看来,引用类型依然是Animal,因此访问的是Animal对象的内容

五、多态的好处和弊端

=============================================================================

  • 多态的好处:提高了程序的扩展性

  • 
           具体表现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作
    
    
    
    
  • 多态的弊端: 不能使用子类的特有功能

六、多态的好处和弊端案例演示



package TEXT01;

/*

    操作对象

 */

public class AnimalOperator {

    public void usAnimal(Animal animal){

        //形参引用类型用Animal 这就不用分Dog还是猫

        animal.eat();

    }

}




package TEXT01;

/*

    动物对象

 */

public class Animal {

    public void eat(){

        System.out.println("吃东西");

    }

}




package TEXT01;

/*

    猫对象

 */

public class Cat extends Animal {

    @Override

    public void eat() {

        System.out.println("猫吃鱼");

    }



    public void play(){

        System.out.println("和小狗玩");

    }

}




package TEXT01;

/*

    狗对象

 */

public class Dog extends Animal{

    @Override

    public void eat() {

        System.out.println("狗啃骨头");

    }

}




package TEXT01;



/*

    测试类

 */



public class Demo {

    public static void main(String[] args) {

        /*

            创建动物对象

         */

        Animal cat = new Cat();

        Animal dog = new Dog();



        //创建操作对象

        AnimalOperator ao = new AnimalOperator();



        ao.usAnimal(dog);//调用狗对象中的方法

        ao.usAnimal(cat);//调用猫对象中的方法

    }

}





# 最后

关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份pdf文档内,分成了以下几大专题:

*   Java基础部分

![](https://img-blog.csdnimg.cn/img_convert/937cc1e369e843402829dcd40697ec5d.webp?x-oss-process=image/format,png)

*   算法与编程

![](https://img-blog.csdnimg.cn/img_convert/6025f3ad1ebfa5c6f5f554f8d430a075.webp?x-oss-process=image/format,png)

*   数据库部分

![](https://img-blog.csdnimg.cn/img_convert/d16586d45e02d6c73a88a8c8d3eae9ac.webp?x-oss-process=image/format,png)

*   流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)

![](https://img-blog.csdnimg.cn/img_convert/c5d04c12b381ac108de67dd13d1930df.webp?x-oss-process=image/format,png)

这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。

**作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。**
(img-e3MRXKRq-1725158674815)]

*   算法与编程

[外链图片转存中...(img-eTaaiHQG-1725158674816)]

*   数据库部分

[外链图片转存中...(img-CqZUwvC7-1725158674816)]

*   流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)

[外链图片转存中...(img-gHmISMVd-1725158674817)]

这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。

**作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。**
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐