* 第三章总结 {
* 内存分析贯穿始终
* 对象和类的概念
* 类 (对类) 之间的关系
* 面向对象设计思想
* 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> 可以扩展
* 接口与接口之间也可以相互继承
类与接口只能 是 实现关系
忠孝两难全!鱼和熊掌不可兼得!
}
* 总结 {
* 内存分析贯穿始终!
}
}