1. 调用和子类同名的父类方法 super.getSalary();
2. 多态
2.1. 子类对象赋值给父类对象: Employee e = new Manager(...);
2.2. 重载(overloading): x.f(String)和x.f(int)
2.3. 阻止继承: final类和final方法
final类不能被继承,final方法不能被覆盖,final类中所有的方法为final方法,final域构造之后值不能被修改。
3. 强制转换
Manager boss = (Manager)staff[0]; 在父类转换成子类之前,需要使用instanceof进行检查
转换之前进行检查: if (staff[i] instanceof Manager) {boss = (Manager)staff[i];}
4. 抽象类
抽象类可以有具体数据和具体方法,接口仅仅只有方法定义,没有实现。抽象类不能被实例化。
final方法和类: 阻止继承。
5. 访问限制
public: 对所有类都可见
private: 仅对本类可见
protected: 对本包和所有子类可见
默认: 对本包可见
6. Object: 所有类的超类
6.1. equals方法 - 在Object中用于判断两个对象是否具有相同的引用,以下是复写Object的equals方法
public boolean equals(Obejct otherObject) {
if (this == otherObject) return true; //检测this与otherObject是否引用同一个对象
if (otherObject == null) return false; //检测otherObject是否为null
if (getClass() != otherObject.getClass) return false; //比较this与otherObject是否属于同一类
Employee other = (Employee)otherObject; //将otherObject转换为相应的类型
return name.equals(other.name) && salary == other.salary ; //对所有域进行比较
}
6.2. hashCode方法 - equals与hashCode的定义必须一致,如果x.equals(y)返回true,那么x.hashCode就必须与y.hashCode()具有相同的值
6.2.1. String类计算散列码
int hash = 0;
for (int i=0; i<length(); i++)
hash = 31 * hash + charAt(i);
6.2.2. Employee的hashcode方法
public int hashCode() {
return 7 * name.hashCode() + 11 * new Double(salary).hashCode() + 13 * hireDay.hashCode();
}
6.3. toString方法
public String toString() {
return getClass().getName() + "[name=" + name + ",salary=" + salary + ",hireDay=" + hireDay + "]";
}
7. 泛型数组
7.1. 操作方法
ArrayList<Employee> staff = new ArrayList<Employee>(); //声明
staff.add(new Employee("Harry Hacker",...)); //在数组列表尾端添加一个元素
staff.ensureCapacity(100); //填充数据之前确定元素容量
ArrayList<Employee> staff = new ArrayList<Employee>(100); //初始容量传递给ArrayList
int size() //返回存储在数组列表中的当前元素数量(这个值可能小于或等于数组列表的容量)
void trimToSize() //将数组列表的存储容量消减为当前尺寸
7.2. 访问数组列表元素
staff.set(i, harry); 等价于 a[i]=harry; //对元素赋值
Employee e = staff.get(i); 等价于 Employee e = a[i]; //获取元素
for(Employee e : staff); 等价于 for(int i=0; i<staff.size(); i++) {Employee e = (Employee)staff.get(i)} //对数组列表循环
add(int index, T obj) //向后移动元素,插入新元素
remove(int index) //删除一个元素
8. 对象包装器和自动打包
譬如Integer类对象基本类型int
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(3); 将自动变成 list.add(new Integer(3)); //自动打包
int n = list.get(i); 将自动变成 int n = list.get(i).inValue(); //自动拆包
Integer.toString(int i); //int转换成String Integer.parseInt(String s); //String转换成int
Integer.valueOf(String s); //String转换为Integer Integer.intValue(); //Integer转换为int
Public static double max(double... values){} //double... values 表示可以接收多个参数,如同double[] values.
9. 反射
9.1. 基本方法
Class cl = e.getClass(); 或者 Class cl = Class.forName(clsssName); //获得class类型
if (e.getClass() == Employee.class) //比较两个类是否相等
e.getClass().newInstance(); //创建一个类的实例
9.2. 获取属性方法
9.2.1. java.lang.Class
Field[] getDeclaredFields() //返回包含Field对象的数组,这些对象记录了该类的全部域。
Field[] getDeclaredMethods() //返回该类或接口的全部方法,不包括由超类继承的方法。
Field[] getDeclaredConstructors() //返回所有构造器。
9.2.2. java.lang.reflect.Field java.lang.reflect.Method java.lang.reflect.Constructor
Class getDeclaringClass() //返回一个用于描述类中定义的构造器、方法或域的Class对象
Class[] getExceptionTypes() //返回一个用于描述方法抛出的一场类型的Class对象数组
int getModifiers() //返回一个用于描述构造器、方法或域的修饰符的整型数值
Class[] getParameterTypes() //返回一个用于描述参数类型的Class对象数组
Class getReturnType() //返回一个用于描述返回类型的Class对象
9.2.3. 设置访问授权 AccessibleObject.setAccessible(fields, true);
10. 枚举值Enum
比较枚举的值时,直接使用“==”,不用equals
Enum valueOf(Class enumClass, Sting name) //返回给定名字、给定类的枚举常量
String toString() //返回枚举常量名
相关推荐
第5章 继承 第6章 接口与内部类 第7章 图形程序设计 第8章 事件处理 第9章 Swing用户界面组件 第10章 部署应用程序和applet 第11章 异常、日志、断言和调试 第12章 泛型程序设计 第13章 集合 第14章 多线程
第5章 继承 第6章 接口与内部类 第7章 图形程序设计 第8章 事件处理 第9章 Swing用户界面组件 第10章 部署应用程序和applet 第11章 异常、日志、断言和调试 第12章 泛型程序设计 第13章 集合 第14章 多线程
Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...
第5章 继承 第6章 接口与内部类 第7章 图形程序设计 第8章 事件处理 第9章 Swing用户界面组件 第10章 部署应用程序和applet 第11章 异常、日志、断言和调试 第12章 泛型程序设计 第13章 集合 第14章 多线程
Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...
Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝性 1. 2.6...
Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...
Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...
Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...
第4章 java核心类与性能优化 4.1 散列表类与性能优化 4.1.1 线程同步散列表类 4.1.2 设置arraylist初始化容量 4.1.3 arraylist与linkedlist 4.2 string类与性能优化 4.2.1 字符串累加与性能优化 4.2.2 字符串的...
� Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的有限子集,尚不承诺遵守 Java 任何 Java 规范 , 可能会造 成J ava 阵营的进一步分裂。 � 现有应用完善度不太够,需要的开发工作量较大。--------------------...
- **第五部分:MySQL/JDBC核心技术:**`SQL语句`、`数据库连接池`、`DBUtils`、`事务管理`、`批处理`、 今日重点: 1.安装jdk 2.会配置环境变量 3.会常用的dos命令 4.会编写helloworld 5.会使用注释对代码进行...
(每分钟 90 转),当前传动装置是第 5 个齿轮。再面向对象的程序设计中,这些数据应放在 变量中。自行车的行为:刹车,改变步度和换档。在面向对象的程序设计中,这些行为用方 法实现。 在 OOP 技术中,对象充当了...
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...
第5章 语句 5.1 表达式语句 5.2 复合语句和空语句 5.3 声明语句 5.4 条件语句 5.5 循环 5.6 跳转 5.7 其他语句类型 5.8 JavaScript语句小结 第6章 对象 6.1 创建对象 6.2 属性的查询和设置 6.3 删除属性 6.4 检测...
Inheritance [java] 继承 [in'heritәns] (遗传,遗产) initialize 预置 初始化 [i'niʃәlaiz] instanceof (关键字) 运算符,用于引用变量,以检查这个对象是否是某种类型。返回 boolean 值。 interface (关键字) ...
超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...