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

来源:互联网 发布:matlab需要编程吗 编辑:程序博客网 时间:2024/06/05 08:32
  * 第三章总结 {  * 内存分析贯穿始终  * 对象和类的概念  * 类 (对类) 之间的关系  * 面向对象设计思想  * 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> 可以扩展            * 接口与接口之间也可以相互继承                  类与接口只能 是 实现关系                  忠孝两难全!鱼和熊掌不可兼得!     }     * 总结 {        * 内存分析贯穿始终!     }      }