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

  • 相关阅读:
    C# 操作配置文件
    C# Excel操作类
    没有找到 mspdb100.dll 的解决办法
    工厂方法模式
    .Net互操作2
    The certificate used to sign “AppName” has either expired or has been revoked. An updated certificate is required to sign and install the application解决
    手机抓包xcode自带命令行工具配合wireshark实现
    expecting SSH2_MSG_KEX_ECDH_REPLY ssh_dispatch_run_fatal问题解决
    使用ssh-keygen设置ssh无密码登录
    远程复制文件到服务器
  • 原文地址:https://www.cnblogs.com/tju-gsp/p/3714595.html
Copyright © 2011-2022 走看看