oop(面向对象编程)

1.对象(object)

自然界含有各式各样的事物,都是对象(Object)

一旦认识某样东西,就能说出其特点,并与其他对象比较一番,其特点包括:

--->对象的特征或属性(Attribute)

--->对象的行为(Behavior)

软件中的对象(SoftWare Object)是由数据(Data)和函数(Fuction)Suomy组成的.

2.类和对象(Class)

类(Class)是群体(或集合),而对象时类中的一份子.常用[是一个](is a)来表达对象与类之间的关系。

例如:

 ----->小明是一个人

 ----->周杰伦是一个歌手

 ----->林俊杰是一个歌手

 ----->小黑是一条狗

周杰伦和林俊杰都属于歌手类,所以他们的共同特点 : 都精于唱歌。

 。。。

3.<基类/子类> 结构用途

 ----------------------------------继承--------------------------------------

在android中自定义控件就是运用了继承 (extends)

---->例如写一个自定义Button

public class MyButton extends Button{
private int width,height;//按钮的大小
public MyButton(Context context){
super(context) ;
super.setText("自定义按钮");
super.setBackgroundResource(R.drawable.icon) ;
width = 100 ;
height = 100 ;
}

public int get_Width(return width) ;
public int get_Height(return height) ;
}

 android View控件有如下继承关系:

 


 ViewGroup是View的子类,LinearLayout等布局都是ViewGroup,ViewGroup中可以防止多个View和ViewGroup进行嵌套,而View是可以显示在Activity上的视图,能看得到的东西基本上都是继承自View



 实现自定义Button

public class MainActivity extends Activity{

 public void onCreate(Bundle sav){
  super.onCreate(sav) ;
  MyButton btn = new MyButton(this);
  LinearLayout.LayoutParams param =
  new LinearLayout.LayoutParams(
    btn.get_Width(),
    btn.get_height() 
  ) ;
 btn.setLayoutParams(params);
  //......
  }
}

 4.<基类/子类>  表达组合

以创建小线程为例,让Thread和Tasks组合起来

Tasks是一个实现了Runnable接口的类



 在主程序运行时要Thread 类封装



Runn
able接口和Thread类是可以合并起来的,也就是把run函数写在Thread的子类中



 



 5.<基类/子类> 接口 Hook函数

在java里,使用抽象(abstract) 函数或可复写(overridable)函数来实现Hook函数。



 6.Ioc机制(控制反转) 和 default 函数



 8.主动型vs被动型 API

 Hook函数实现API

 

 API与这个名词,有三个相互关联的动词:

 定义(define)     实行(Implement)       呼叫(Invoke or call)

 根据这三个角度,把API分为【主动型】和【被动型】两种


 

下面来看一个Android api的范例

在oncreate方法中,两次调用setContentView

 

猜你喜欢

转载自1350579085.iteye.com/blog/2075650