创建一个类的时候,什么时候选择类、内部类、静态内部类、匿名内部类?设计框架时该如何选择。
当我们要实现某个功能的时候,就需要创建一个类,因为具体的功能是由方式和变量来实现的,但是方法和变量又不能单独存在,它们需要一个容器,类就是这个容器。
当需要对某个类进行扩展,而这个扩展又不好用方法的形式实现,且不希望其他的类能够访问的时候,就需要使用内部类。比如说在某个类内部需要使用一个实体类,但是又不希望这个实体类在其他的类中可以访问到,就可以将这个实体类写成内部类。
静态内部类,它和内部类最大的区别就是不能访问外部类的非静态变量和方法,在Android中,为了避免内存泄漏,一般需要把内部类写成静态的。
匿名内部类,可以把它理解为一种用完即走的东西,最典型的应用场景就是Android中的各种监听事件。直接 new 一个listener 对象,处理完逻辑就完事了。
什么时候会创建一个抽象类,为什么不用接口?设计框架时该如何选择?
为了让程序有好的可以扩展性和可维护性,我们需要遵循一个原则,就是先从具体到抽象,再从抽象到具体。抽象就是将一类事物的共同属性,特征和行为抽取出来,然后在写具体业务逻辑的时候再根据这些共同属性去进行相应的扩展,所以当需要抽取共同属性,特征和行为的时候就需要用抽象类。
接口,我感觉我对接口一直都不怎么理解具体的原理,所以说不好,只是会用,,,
常见的类、成员变量修饰符
这个问题的文章是我写的,直接看文章吧。
自动装箱拆箱
这个应该是 JDK5 提供的新特性,目的是为了简化开发,少写重复代码。
作用就是在使用基础类型和引用类型的时候,系统可以自动为我们在基础类型和引用类型之间转换。具体的就说不太清楚了。
注解
这个好像是为了让程序更好的解耦和更好的规范开发出现的,Android有大量使用注解,比如说重写方法时的 override ,方法参数里面的 NotNull,Nullable等。具体原理也说不清楚,会用一些基本的注解。
反射
因为有权限修饰符的存在,有些类在正常情况下是没法访问的。如果一定要访问这些类的话,就只有通过反射来实现,反射会降低一定的性能(毕竟是非正常途径)。
Java反射机制是指在运行状态中:
对于任意一个类,都能知道这个类的所有属性和方法;
对于任何一个对象,都能够调用它的任何一个方法和属性;
就知道这么多了,,,,
泛型
字面意思:广泛的类型,实际上可以是任意数据类型,广泛运用在集合中,还有当不确定数据类型的时候也可以使用一个泛型来代替。
异常
异常就是程序运行中碰到的意外情况,可以通过主动预防的方式去处理异常,就是在开发的时候预见到这段代码有可能会产生异常,这时候就需要主动的去处理。有try-catch和throwable二种方式,
try-catch 为捕获,就是将异常抓起来,不让它跑出去,捕获时可以做相应的逻辑处理。
throwable 为主动抛弃,就是当产生异常时,将这个异常主动抛弃掉,不去处理。
在有可能出现异常的地方,如果没有进行主动预防,就可能会产生异常,这时程序就会报错崩溃,比如经常会遇到的空指针。
集合框架
集合分为很多种,各自有它的优点和相应的使用场景,比如安全但是查询慢,查询块但是不安全等。
这方面的知识只记得 list 和 arrayList ,平时用的时候也基本都是用的 arrayList。
IO
IO 通常所说的流,所有的读写操作都会涉及到流,而所有的 IO 操作都是耗时的,在Android 中需要放到单独的线程中去处理。
字符串
天天用,但是有什么需要说的我还真不知道,,,,
网友评论