2017.12.20三题

1.抽象与封装有何区别
  • 抽象是从众多的事物中抽取共同的、本质性的特征,而舍弃其非本质的特征。
  • 封装则是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
  • 抽象是更通用的术语,它的实现可以由子类完成。例如,List类是一种JavaSE抽象,List的具体子类ArrayList和LinkedList。如果没有通过封装隐藏其内部状态,抽象也不可能实现,如果一个类暴露其内部状态,它不能再其内部完全掌控改变这个状态,那么这也不是抽象。
  • 封装是作为抽象的一部分。封装是对象封装它自己的状态,并对外部隐藏,该类意外的其他类必须通过它的方法进行交互,但不能直接访问该类的状态。所以封装的类是为了抽象了有关其状态的实现细节。
2.接口与抽象类有何却别?

1.抽象类可以提供成员方法实现细节,而接口中只能存在public abstract抽象方法。
2.抽象类的成员变量可以是各种类型,而接口中的成员变量必须用public static final修饰。
3.接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法。
4.一个类只能继承一个抽象类,而一个类可以实现多个接口。

3.同一个程序,但不同的Activity是否可以放在不同的Task任务栈中?
  • 可以在清单文件中配置Activity的taskAffinity属性,这样就可以指定在其他栈中。
  • 在BroadCastReceiver中或者service以及application中启动Activity中启动Activity需要给intent加上FLAG_ACTIVITY_NEW_TASK
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
  • 可以指定activity的启动模式为单一实例模式
    android:launchMode="singleInstance"

你可能感兴趣的:(2017.12.20三题)