2024年安卓最全面向对象的特征之三多态性,2024年最新大厂面试准备

最后

**要想成为高级安卓工程师,必须掌握许多基础的知识。**在工作中,这些原理可以极大的帮助我们理解技术,在面试中,更是可以帮助我们应对大厂面试官的刁难。


网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

    person.say();//执行时调用子类重写后的代码

}




**3、程序运行分为编译状态和运行状态**  

引用类型的变量有两种类型,对于多态性来说:  

编译时,“看左边”,将此引用变量理解为父类的类型  

运行时,“看右边”,关注于真正对象的实体,子类的对象。那么执行的方法是子类重写的。



class Chinese extends Person {

public void say() {

    System.out.println("你好,欢迎光临");

}



public void test() {

    System.out.println("中国特色的");

}

}


public static void main(String[] args) {

    Person person = new Chinese();//多态引用

    person.say();//执行时调用子类重写后的代码

    person.test();//无法调用,编译时是照Person类型处理

    //所以找不到test()方法

}




**4、子类对象的多态性,并不适用于属性,属性只有编译时类型。**



**5、向上转型与向下转型**  

向上转型:把子类对象给父类的变量,自动转型  

向下转型:把父类的对象赋值给子类的变量,需要强制转换,一定要注意:_这个对象本质上是这种子类的实例_  

如果:不是对应的类型会报一个异常:java.lang.ClassCastException:  

用于类型判断的运算符:_instanceof_  

![这里写图片描述](https://img-blog.youkuaiyun.com/20170118211432133?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGRoZGdkaGRo/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)  

**6、多态应用之一:多态参数**  

**7、多态应用之二:多态数组/集合**



/*

  • 面向对象的特征:多态性

1、多态性指的是什么?多态性,可以理解为一个事物的多种表现形态。

1方法的重载与重写

2子类对象的多态性   

2、子类对象多态性的体现前提:

1继承

2子类重写父类的方法

3向上转型的现象

3、引用类型两种类型:

例如:Person p1 = new Chinese();//对于p1这个变量来说

编译时类型:p1编译时照Person类型处理

运行时类型:p1运行时照Chinese类型处理

4、向上转型:自动,子类的对象自动可以赋值给父类的引用变量

向下转型:强制把某个父类的引用变量的值强制赋值给子类的引用变量

注意:强制类型转换的时候时隐患java.lang.ClassCastException

注意:向下转型必须确保之前的对象是对应的子类类型new的

5、使用instanceof比较运算符来判断某个对象是否属于某个类型

格式 引用类型变量/对象 instanceof 类型名

6、多态的应用之一:多态参数

    welcome(new Person());

    welcome(new Chinese());

    welcome(new Korean());

    welcome(new American());



//定义一个功能,能够接待不同国籍的友人

public static void welcome(Person p){

    p.say();

}

7、多态的应用之二:多态数组/集合

    Person[] ps = new Person[4];

    ps[0] = new Person();

    ps[1] = new Chinese();

    ps[2] = new Korean();

    ps[3] = new American();

    for(Person temp : ps){

        temp.say();

    }

8、子类对象的多态性,并不适用于属性,属性只编译时类型,只看左边

    Person p4 = new Chinese();

    System.out.println(p4.country);//地球村

*/

public class TestPolymorphism1 {

public static void main(String[] args) {

    //变量

    //数据类型  变量名=对应的类型

    int num=10;

    long n=num;//int-->long,自动转

    num=(int)n;//long-->int,强制转



    Person p = new Person();//本态引用

    Chinese c = new Chinese();//本态引用



    Person person = new Chinese();//多态引用,向上转型

    person.say();//执行时调用子类重写后的代码

// person.test();

    //无法调用,编译时是照Person类型处理,所以找不到test()方法

    // 编译看左边,运行看右边



    Chinese chinese = (Chinese) person;// 向下转型

    chinese.test();

    // 这里可以向下转型,是因为p本身就是指向Chinese类型的堆内存

    // 只是之前关于Chinese类型自定义的属性和方法被屏蔽掉而已,向下转型后就可以使用了

/* Chinese c1 = (Chinese)p;

    c1.test();

    c1.getGongfu();

    // java.lang.ClassCastException:

    // 因为右边对象的堆内存中没关于Chinese中的自定义的属性和方法

    // 为了避免你去调用不存在的属性与方法,因此不允许这样转



    Person p2 = new Korean();

    Chinese c3=(Chinese) p2;//java.lang.ClassCastException:

*/

    welcome(new Person());

    welcome(new Chinese());

    welcome(new Korean());

    welcome(new American());



    Person[] ps = new Person[4];

    ps[0] = new Person();

    ps[1] = new Chinese();

    ps[2] = new Korean();

    ps[3] = new American();

    for(Person temp : ps){

        temp.say();

    }



    Person p4 = new Chinese();

    System.out.println(p4.country);

}

最后

感谢您的阅读,在文末给大家准备一个福利。本人从事Android开发已经有十余年,算是一名资深的移动开发架构师了吧。根据我的观察发现,对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。

所以在此将我十年载,从萌新小白一步步成长为Android移动开发架构师的学习笔记,从Android四大组件到手写实现一个架构设计,我都有一一的对应笔记为你讲解。

当然我也为你们整理好了百度、阿里、腾讯、字节跳动等等互联网超级大厂的历年面试真题集锦。这也是我这些年来养成的习惯,一定要学会把好的东西,归纳整理,然后系统的消化吸收,这样才能极大的提高学习效率和成长进阶。碎片、零散化的东西,我觉得最没有价值的。就好比你给我一张扑克牌,我只会觉得它是一张废纸,但如果你给我一副扑克牌,它便有了它的价值。这和我们收集资料就要收集那些系统化的,是一个道理。

最后,赠与大家一句诗,共勉!

不驰于空想,不骛于虚声。不忘初心,方得始终。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

转存中…(img-uFI7w34b-1715797414882)]

最后,赠与大家一句诗,共勉!

不驰于空想,不骛于虚声。不忘初心,方得始终。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值