Android面试中常见的Java面试题(二)
一、扩展:内部类都有哪些?
有四种:静态内部类、非静态内部类、局部内部类、匿名内部类
二、多态概述
1.多态是继封装、继承之后,面向对象的第三大特性。
2.多态现实意义理解: 1)现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个 具体的同学张三既是学生也是人,即出现两种形态。 2)Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。 3)多态体现为父类引用变量可以指向子类对象。 4)前提条件:必须有子父类关系。 5)定义格式:父类类型 变量名=new 子类类型(); 6)理解:多态是同一个行为具有多个不同表现形式或形态的能力,多态就是同一个接口,使用不同的实例而执行不同操作。
三、多态中成员的特点
1、多态成员变量:编译运行看左边
Fu f=new Zi(); System.out.println(f.num);//f是Fu中的值,只能取到父中的值
2、多态成员方法:编译看左边,运行看右边
System.out.println(f1.show());//f1的门面类型是Fu,但实际类型是Zi, 所以调用的是重写后的方法。
三、instanceof关键字
作用:用来判断某个对象是否属于某种数据类型。
Fu f2=new Son(); if(f1 instanceof Zi){ System.out.println("f1是Zi的类型"); } else{ System.out.println("f1是Son的类型"); }
四、多态的转型
多态的转型分为向上转型和向下转型两种: 1、向上转型:多态本身就是向上转型过的过程 使用格式:父类类型 变量名=new 子类类型(); 适用场景:当不需要面对子类类型时,通过提高扩展性,或者使用父类的功能就能完成相应的操作。
2、向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用类型转为子类引用各类型 使用格式:子类类型 变量名=(子类类型) 父类类型的变量; 适用场景:当要使用子类特有功能时。
五、 java中接口和继承的区别
实际概念区别: 区别1:不同的修饰符修饰(interface),(extends)
区别2:在面向对象编程中可以有多继承!但是只支持接口的多继承,不支持'继承'的多继承,而继承在java中具有单根性,子类只能继承一个父类
区别3:在接口中只能定义全局常量,和抽象方法,而在继承中可以定义属性方法,变量,常量等...
区别4:某个接口被类实现时,在类中一定要实现接口中的抽象方法而继承想调用那个方法就调用那个方法,毫无压力
六、线程池的好处
1、线程池的重用: 线程的创建和销毁的开销是巨大的,而通过线程池的重用大大减少了这些不必要的开销,当然既然少了这么多消费内存的开销,其线程执行速度也是突飞猛进的提升。
#android面试#2、控制线程池的并发数: 初学新手可能对并发这个词语比较陌生,特此我也是结合百度百科和必生所学得出最优解释,万万记着并发可跟并行不一样。