zoukankan      html  css  js  c++  java
  • Java 面向对象

    1、对象与实例

      对象与实例之间的区别:对象是同类事物的抽象形式,实例是对象的具体化。对象可以实例化很多实例。

         无需实例化也可以使用的是对象的静态方法。也就是说这个方法适用于同类事物的所有对象。

       当获取或设定同类事物不同属性的时候,就需要对对象进行实例化,这些实例之间相互区分。

    2、嵌套类

      对于C++来说,嵌套类是合成型聚集关系的另一种表达方式,在代码生成时映射成inline class。Java的内部类与C++的嵌套类的区别在于:是否有指向外部的

    引用。Java的内部类以为着:创建一个static内部类的对象,不需要一个外部类对象,不能从一个内部类的对象方位一个外部类的对象。

        关于非GUI的内部类,这篇文章蛮好:http://lavasoft.blog.51cto.com/62575/179484/

        关于GUI编程的内部类(事件监听),这个文章可以作为参考,大致的套路都差不多:http://blog.sina.com.cn/s/blog_78e96ce70100tr9c.html

    3、集合类

      Java的容器类型有两种:Collection、Map。

        Collection:

                      (特定次序存放)List :ArrayList,LinkedList,Vector

           (每个值只能保存一个对象,不能含重复的元素)Set:HashSet<散列函数>,TreeSet<红黑树>,LinkedHashSet<链表+散列>。

                       Queue: PriorityQueue。

              Map:

                      HashMap:基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用

                                      null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 

                      HashTable:此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,

                                       用作键的对象必须实现 hashCode 方法和 equals 方法。

                      TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator

                                     进行排序,具体取决于使用的构造方法。 

          (1)容器类与数组的区别

                 容器类只是能够持有对象的引用,而不是对象的副本,一旦将对象置于容器内,对象的类别信息就损失掉了。

                 所有的容器中,ArrayList应当作为默认的选择。

                 插入、删除频繁时使用LinkedList。

                 插入和查找较多时,HashSet优于HashTree,只有需要一个有序输出时采用TreeSet。

                 HashMap用于快速查找。

    4、构造函数和析构函数

       1、构造函数可以被重载,这样允许多种方式初始化一个类。

         2、构造函数没有返回值。

         3、存在继承关系时,子类构造函数调用前,父类构造函数调用。

       4、多个构造函数存在时,可以决定调用其中某一个,但是不可以不调用;不显式的调用,那么就会调用无参构造函数。

         5、存在继承关系时,析构函数的调用顺序与构造函数相反。

    5、多态性

         首先区分重载和覆盖。

         重载的规则:
          1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序

         (参数类型必须不一样;

          2、不能通过访问权限、返回类型、抛出的异常进行重载;

          3、方法的异常类型和数目不会对重载造成影响;

          编译器对于重载的函数,在编译阶段就会进行区分,所以重载并非多态性的一部分,因为这些函数都是静态的。而所谓的多态,核心思想是晚绑定,即运行时

    绑定,是动态的。

           覆盖:子类重写父类的同名函数。

           多态,一言以蔽之:允许将子类的指针或者引用赋给父类。

        1、使用父类类型的引用指向子类的对象;

      2、该引用只能调用父类中定义的方法和变量;

      3、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)

      4、变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父类中的变量,那么在编译时会报错。

  • 相关阅读:
    iOS网络开发之AFNetworking
    TCP/IP、Http、Socket的区别
    iOS开发
    iOS 10相关技术
    HTTP协议详解
    HTTPS和HTTP的区别
    CocoaPods
    关于 iOS 10 中 ATS 的问题
    Run Loop详解
    iOS开发项目之MVC与MVVM
  • 原文地址:https://www.cnblogs.com/tju-gsp/p/3714595.html
Copyright © 2011-2022 走看看