[Java] 第三章 面向对象总结

  * 第三章总结 {
  	* 内存分析贯穿始终
  		* 对象和类的概念
  		* 类 (对类) 之间的关系
  		* 面向对象设计思想
  		* class
  		* new
  			* 引用的概念
  			* 构造方法的概念
  		* 方法重载
  			* 构造方法重载
  		* this
  		* static
  		* package & import
  		* private default protected public
  		* extends
  		* overwrite
  		* final
  		* Object
  			* toString
  			* equals
  		* upcasting downcasting
  		* polymophysm / dynamic binding / late
  		* abstract class
  		* interface
  			* implements
  	}
第三章 面向对象
 *1, 成员变量有初始值。java 你写了构造方法,它就不会再给你提供默认的构造方法了。
 1)  定义类 -> 对象  /  定义方法 -> 调用
 2)  static 知道了内存,你就知道了一切!
      局部变量分配在栈内存
      成员变量分配在堆内存
     static 变量为类对象的共享的变量 在数据区
  字符串常量在 数据区
  非静态变量 专属于某一个对象
  静态方法不再是针对某一个对象进行调用, 所以不能访问非静态成员。
3) {
    * package / import   package 包名起名字方法 : 公司域名倒过来!
    * 必须class文件的最上层包的父目录位于classpath下。
    * 执行一个类需要写全包名。
    rt.jar 
  * J2SDK 中主要的包介绍  java.lang特殊,使用不需要引入
    * java.lang - 包含一些 java 语言的核心类, 如 : String, Math, Integer, System, Thread.
    * java,awt  - 包含了构成抽象窗口工具集 (abstract window tookit) 的多个类
    * java.applet-包含applet运行所需的一些类
    * java.net  - 包含执行与网络相关的操作的类
    * java.io   - 包含能提供多种输入/输出功能的类
    * java.util - 包含一些实用工具类.
  }
  equals的重写
  对象转型 {
   *1 基类引用可以指向子类对象
   *2 一个基类的引用不可以访问其子类对象新增加的成员
   *3 可以使用引用 变量 instanceof 类名 来判断该引用型变量所指向的对象是否属于该类或该类的子类
   *4 子类的对象可以当作基类的对象来使用称作向上转型,反之称为向下转型
  }
  把自己的文件打成 jar 文件方法 {
    在最上级包的上一层执行 jar -cvf test.jar *.*
  }
  怎么样把 jar 包 放在classpath下面,别人好能用。 {
    设置 classpath 并包括那个 jar 文件
  }
  * 类的继承与权限控制 {
    分析内存 - 子类对象包含一个父类对象。。。
    访问控制 {
        * 修饰符      类内部     同一包内      子类     任何地方
        * private      Yes
        * default      Yes         Yes
        * protected    Yes         Yes         Yes
        * public       Yes         Yes         Yes         Yes  
    }
  }
  * 方法的重写 {
     重写方法不能使用比被重写方法更严格的访问权限 -- 其实这和多态有关
  }
  * super 关键字 
  * 继承中的构造方法 {
        如果调用 super 必须写在构造方法的第一行
        如果没调用,系统自动调用 super(), 如果没调,父类中又没写参数为空这个构造方法则出错。
    }
  * Object 类 {
    instanceof 是一个操作符
    TestEQ 非常重要!
    equals方法 J2SDK 提供的一些类 如 String , Date 重写了Object 的 equals() 方法。
  }
  * 对象转型 casting {
    * 一个基类的引用类型变量可以指向 “其子类的对象”。
    * 一个基类的引用不可以访问其子类新增加的成员
    * 可以使用 引用 变量 instanceof 类名 来判断该引用型变量所"指向"的对象是否属于该类或该类的子类。
    * upcasting / downcasting
        内存分析 - 明白了内存你就明白了一切!
        可扩展性比较好。。。
  }
  * 动态绑定, 池绑定, 多态 {  是在执行期间,不是在编译期间
    动态绑定的机制 是 实际类型 new 的是!
    深一点 -- 是对象内部有一个指针。。。。。。
    动态绑定的机制是 : 实际类型,还是引用类型。是调用实际类型,不是引用类型。
    实际地址才会绑定到那个方法上。 方法在  code segment
    只有在运行期间(不是在编译期间),运行出对象来,才能判断调用哪一个。。。。
    带来的莫大好处 。。。 是可扩展性达到了非常非常的极致好!
    ——————————————————————————————————————————————————————————————————————————————————————
    这是面向对象核心中的核心。核心中的核心。! 面试 : 举例子 并且内存分析之间你小子来吧!
    ——————————————————————————————————————————————————————————————————————————————————————
    多态小总结 : {
        1, 要有继承
        2, 要有重写
        3, 父类引用指向子类对象
    }
    "雷电那个游戏"
    * 抽象类
    * final 关键字
        * final 类,方法,变量
        例如: public final class String
                     public final class Math
    * 接口 -- 一种特殊的抽象类 {
            * 其中的变量全部都是 public static final int id = 1; 避免 C++ 中的问题
                        方法全部都是抽象方法
            * 每个接口暴漏了我们这个对象的一部分方法。
            * java.lang - Comparable 我看就像 cmp 一样!(个人认为)
                  Interface Comparable<T> 可以扩展
            * 接口与接口之间也可以相互继承
                  类与接口只能 是 实现关系
                  忠孝两难全!鱼和熊掌不可兼得!
     }
     * 总结 {
        * 内存分析贯穿始终!
     }      
}

原文地址:https://www.cnblogs.com/robbychan/p/3786583.html