java 名词解释等


实例
引用 实质指针
封装
for 的不同形式 for (int i : Location)
集合类 ArrayList<Egg> = new ArrayList<Egg>()
import 作用, 只是提供缩写
继承 "有一个" 和 "是一个" 区别
多肽 向上转型 和 向下转型 ( 向上转型没问题, 向下转型要判断 )
final class 不能被继承的累
final 变量, 常量
final 方法, 不能被重写(覆盖)
如果内部类被定义为 private final class Inner, 那么即不能被继承, 因为有final, 也不能被外部调用, 因为有Private, 所以就只能内部用
方法的重写(覆盖), 是指子类的方法重写父类同名方法
注意, 重写和多肽是完全不同的两个概念

接口, interface, 特殊的抽象类, 只能拥有抽象方法.
抽象类, abstract class, 只能被继承, 不能被实例化的类, 例如 animal
抽象方法, 没有实体, 只能被覆盖, 抽象方法只能存在于抽象类中, 如果一个类里有一个以上抽象方法, 则必须声明为抽象类
如果一个类继承了抽象类, 并且没有实现该抽象方法, 那么这个类也必须是抽象的
抽象类中可以存在非抽象方法, 可接口里只能声明一种用 public 来修饰的没有具体实现的方法.抽象类的成员变量可以被不同的修饰词来修饰, 但是接口中的成员变量默认都是静态常量.

设计类
如果新的累无法对其他类通过IS-A 测试, 就设计成不继承的类 // 类
只有在需要某类特殊化的版本时, 以覆盖或增加新的方法来继承现有类 // 继承
当你需要定义一个子类的模板, 又不系那个让程序员初始化此模板, 设计抽象类 // 抽象类
如果定义出类可以扮演的角色, 接口  // 接口

内存结构
局部变量 和 方法(包括实例方法) 存储在 栈 中
实例变量 和 对象 保存在 堆 中

构造函数, 默认构造函数, 注意在构造函数首行, supper(), 或 this(aaa) 这两种不能兼得, 必须放在首行, 想栈结构
另外, 构造函数会有连锁反应, 总是先调用父类构造函数.

静态方法, 不需要实例化就可以调用的方法, 类似静态变量, 静态变量是一种“共享变量”
包装类, 是只对原子类型的包装, 例如 int 和 integer.
异常, 首先是方法抛出异常, 而 try catch 只是在你调用该方法时, 要用的一种手段来捕获异常. 处理多重异常时, catch 要由小变大

事件与监听
事件源: 能够触发的事件 例如, button 是一个事件源
监听接口, 是介于事件源与处理事件的对象之间的桥梁 button.addActionListener(this), 其中由于这个事件源实现了监听接口, 那么桥梁建立成功, this就是用来处理事件触发后的对象
如果事件源能够触发多种事件, 那么如何处理的, 我们的办法就是定义两个对象分别来进行处理, 那么怎么做的?
1. has-A 的关系, 我们可以在这个类中定义两个实例变量,这两个对象分别就是处理事件的对象的实例, 但是这样有个问题, 就是这两个处理的对象不能够访问事件源本身,
   例如, 屏幕上有个圆形图, 我想每次点击它时, 它变大, 事件点击->事件处理都没问题, 但是事件处理->圆变大就有问题, 因为事件处理对象无法访问到“圆”, 所以这个方法不行
2. 内部类, 同样是定义两个实例变量, 这两个变量时处理事件对象的实例, 但是这两个处理事件的对象的类的定义在事件源内部, 这样, 这两个类就可以访问到事件源中的内容,还是上边的例子
   例如, 屏幕上有个圆形图, 我想每次点击它时, 它变大, 事件点击->事件处理->圆变大都没有问题.

所谓RMI, 是一种远程调用接口, 就好比, 你目前想调用一个对象, OK, 没问题, 因为都在你本地的java虚拟机中,但是如果你想调用其他机器的类,怎么办, 可以使用java提供的 scoket 来实现,
java 有一套组件RMI, 使得你调用其他机器的类时, 感觉和调用你本地虚拟机的类一样感觉.

泛型, <>, 目前看到 ArrayList 在使用, 感觉像类型模板

java 命令行编辑模式  javac -d ( 将class文件放置目录 ), -classpath 引用的类, -sourcepath 提供到package根部, 因为有是有你引用了别的类, 而该类没有在classpath中, 那么使用这个源路径帮助编译
环境变量  JAVA_HOME, classpath, PATH
单元测试  JUnit

你可能感兴趣的:(java)