您的位置:首页 > 移动开发 > Objective-C

OOP(Object Oriented Programming)面向对象程序设计

2010-04-05 14:04 405 查看
1、 面向对象的基本原则:最合适的属性放在最合适的类里面。合适的方法应当出现在合适的类里面。

2、 考虑问题的时候:首先,应该确定这个问题有几个对象;其次,这几个类、这几个对象每一种类、每个对象有哪些属性和方法;最后,在考虑对象与对象之间的关系。

3、 对象通过“属性(attribute)”和“方法(method)”来分别对应事物所具有的静态属性(特征)和动态属性(行为)。具体的事物

4、 类是一类事物的抽象。

5、 对象与对象的区别主要是靠属性。

6、 类(对象)之间的关系:A、关联关系(映射到代码上是:一个类的方法里面,是另外一个类具体的某一个对象,简单说就是这方法的参数,是另外一个类的对象)

B、继承关系(什么是一种什么(is-a))

C、聚合关系(整体和部分):谁是谁的一部分;更进一步分为:

a、聚集

b、组合(密不可分,必不可少的)

D、实现关系(接口interface),每一个有自己的实现方法。

E、与实现关系相关的:多态

7、怎样从问题中分析类:找名词,但是要分清楚那些属于属性和那些属于类

8、首先,必须定义类,才有对象。

9、为什么用对象?可重用性(Reusable)\可扩展性(Extensibility)\维护和替换更加方便

10、成员变量:(包括基本类型和引用类型(默认为null)),可以对其初始化,也可以不对其初始化(Java默认),范围整个类体

11、引用类型:指针(一小块内存调用一大块内存)

12、构造方法:把自己构建为一个新对象。(使用new+构造方法 创建一个新的对象)

13、当一个方法调用完成之后,栈(局部变量)里面为他分配的所有空间全部消失。

14、自己定义了构造方法,系统就不会默认。

15、static属于类所有。只有一份。static方法中不可访问非static的成员。公用变量

静态方法不能以任何方式引用this和super关键字。

16、方法重载(overload):参数不一样是指参数的类型和参数的个数不一样。

17、this是一个引用,他指向自身的对象。他的值是当前对象的引用。一般出现在方法里面。

18、package是解决类的命名冲突问题。约定俗称用公司的域名倒过来写。编译的文件要和包的层次完全一致。java.lang不需要引入,直接用。必须保证该类的class文件位于正确目录下。

19、jar-cvf打包。

20、权限控制:public\default\protected\private class的修饰符只可以用public和default

21、extends关键字实现类的继承机制。super关键字指向当前对象父类对象的引用(调用父类的构造函数、方法、成员变量)。

22、重写(override):相同的方法名称、相同的参数列表、相同的返回类型。要重写最好(copy)。重写方法不能使用比被重写方法更严格的访问权限。

23、子类的构造的过程中必须调用其基类的构造方法。首先,调用父类的构造方法。使用this调用本类的另外的构造方法。如果使用super,必须写在子类构造方法的第一行。

24、如果子类的构造方法中没有显示地调用基类构造方法,则系统默认调用基类无参数的构造方法。

25、学会分析内存的执行情况,就能解决所有的问题。

26、Object类是Java所有类的根基类。如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类。

27、hashcodes table:他独一无二的代表一个对象,并且通过hash编码找到这个对象所在的位置。

28、equals:在内存中分析执行过程。比较在内容上是不是相等。查API文档。指向同一个引用就相等。比较两个对象最好重写equals方法。

Public Boolean equals(Object obj)方法:提供定义对象是否“相等”的逻辑。

Object的equals方法定义为:x.equals(y)当x和y是同一个对象的应用时返回true否则返回false;

JDK提供的一些类,如String,Date等,重写了object的equals方法。

29、对象转型(casting):一个基类的引用不可以访问其子类对象新增的成员(属性和方法);

可以使用引用变量(instanceof(整个对象是什么东西))类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类;

子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting).

30、动态绑定(polymoph):也叫多态。动态绑定是指“在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。”划内存图执行情况可以加深对多态的理解。可扩展性达到极致;面向对象的核心。多态存在的条件:

A、要有继承

B、要有重写

C、父类引用指向子类对象

31、抽象类:关键abstract 只有定义没有实现的方法,叫抽象方法。抽象方法必须重写。抽象类不能new,因为他是残缺不全的。抽象类必须被重写。

32、final关键字:final的变量的值不能够被改变(final的成员变量、final的局部变量(形参))

Final的方法不能够被重写

Final的类不能够被继承

相当于只能读,不能重写。

33、interface(接口):多个无关的类可以实现同一个接口。

一个类可以实现多个无关的接口。

与继承关系类似,接口与实现类之间存在多态性。

特殊的抽象类。是抽象方法和常量值的定义的集合,而没有变量和方法的实现。

修饰符只能是:public、final、static(也是接口默认的)

接口中的抽象方法修饰符只能是public的(也是接口默认的)

实现接口的关键字:implements

接口对于我们整个实际当中的对象来说:他实际就是每一接口暴露了对象的部分方法。

接口之间可以相互继承。

34、匿名对象:只需调用一次,没有起名字。直接new,没有引用。

35、实现类的封装性:避免对数据不合理的操作。可维护性

36、静态代码块:

A、 一个类中可以使用不包含在任何方法体中的静态代码块(static block ),当类被载入时,静态代码块被执行,且只被执行一次,静态块经常用来进行类属性的初始化。

B、类中的静态代码块被自动执行,尽管我们产生了类的多个实例对象,但其中的静态代码块只被执行了一次。当一个程序中用到了其他的类,类是在第一次被使用的时候才被装载,而不是在程序启动时就装载程序中所有可能要用到的类。

37、内部类:

38、匿名内部类:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐