[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> 可以扩展 * 接口与接口之间也可以相互继承 类与接口只能 是 实现关系 忠孝两难全!鱼和熊掌不可兼得! } * 总结 { * 内存分析贯穿始终! } }