`

Java核心技术卷I -- 第5章 继承

F# 
阅读更多

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()  //返回枚举常量名

分享到:
评论

相关推荐

    JAVA核心技术-卷I 卷II-源代码

    《JAVA核心技术》是Java开发领域的经典著作,分为卷I和卷II,涵盖了Java语言的核心概念和技术。这本书深入探讨了Java编程的各种方面,是初学者和经验丰富的开发者的重要参考资料。源代码部分提供了书中示例和练习的...

    java核心技术卷I 源代码 (第七版)

    《Java核心技术卷I》是Java开发者的经典参考书籍,它深入浅出地讲解了Java语言的基础和核心概念。第七版的发布,不仅包含了最新的Java版本特性,还对原有的内容进行了更新和完善,使得这本书更适合现代软件开发的...

    Java核心技术卷一第10版PDF

    第五章至第七章将带你深入理解面向对象编程的核心概念,如类、对象、封装、继承、多态。这是Java的核心特性,也是区分它与其他编程语言的重要区别。通过实例,你将学会如何设计和使用类,以及如何利用继承和多态性...

    Java核心技术卷I和II(第八版)

    《Java核心技术卷I和II(第八版)》是Java编程领域的权威指南,涵盖了从基础到高级的全方位知识。这两本书是Java开发者必备的学习资料,旨在帮助读者深入理解Java语言的本质和应用。 卷I主要侧重于Java的基础知识,...

    Java核心技术(卷I)基础知识(原书第9版)

    《Java核心技术(卷I)基础知识(原书第9版)》是一部深入讲解Java编程语言基础知识的权威参考书,由Cay S. Horstmann编写。本书自首版发行以来,一直受到广泛的认可和欢迎,是Java学习者必备的经典教材之一。在第九版中...

    Java核心技术-卷1(基础知识-原书第10版)

    《Java核心技术-卷1(基础知识-原书第10版)》是一本深入浅出的Java编程指南,专为Java编程爱好者和初学者设计。这本书详细介绍了Java语言的基础概念和核心特性,帮助读者掌握Java编程的基本技能。以下是该书涵盖的...

    Java核心技术卷1-卷2源代码(第八版)

    这里我们关注的是《Java核心技术》卷1和卷2的第八版源代码。这本书是Java开发者的重要参考资料,深入讲解了Java的基础和高级特性。以下是对这些源代码文件中可能涉及的知识点的详细解释: 1. **基础语法**:包括...

    Java核心技术 卷I 基础知识(原书第8版)1

    《Java核心技术 卷I 基础知识》(原书第8版)是一本非常经典的书籍,它系统地介绍了Java语言的基础知识,并将其分为“基础篇”与“高级篇”两个部分进行阐述。本书旨在帮助读者掌握Java的核心概念和技术,无论你是...

    java核心技术I-II

    这个压缩包文件"java核心技术I-II"很可能包含两部分:基础篇(I)和进阶篇(II),旨在为学习者提供全面的Java知识体系。 在基础篇(I)中,你可能会学到以下知识点: 1. **Java简介**:Java的历史、特性,以及为...

    java核心技术 卷1 第十版

    《Java核心技术 卷1 第十版》是一本深入讲解Java编程基础的经典著作,它涵盖了Java语言的核心概念和技术,是初学者和有经验的开发者提升技能的重要参考资料。此PDF版本并非扫描版,这意味着文本清晰可读,且具备目录...

    Java 核心技术 卷Ⅰ 基础知识 第11版 英文版

    《Java核心技术 卷Ⅰ 基础知识 第11版 英文版》是关于Java编程语言的权威指南,由Cay S. Horstmann撰写。这本书是Java学习者和专业开发者的宝贵资源,提供了Java编程语言的基础知识,并涵盖了许多高级话题。 EPUB是...

    Java核心技术卷I基础知识第10版高清完整版

    《Java核心技术卷I基础知识第10版》是Java开发者必读的经典教材,全面覆盖了Java编程的基础知识。这本书深入浅出地介绍了Java语言的核心概念,为读者提供了扎实的理论基础和实践经验。第10版更是对之前的版本进行了...

    java核心技术卷1 mobi

    《Java核心技术卷1》是Java开发者必读的经典之作,它深入浅出地讲解了Java编程的基础概念和技术。这本书主要涵盖了Java语言的核心要素,为初学者和有经验的开发者提供了全面的知识框架。 首先,我们来看看“Core ...

    JAVA核心技术卷I源代码(第七版)

    《JAVA核心技术卷I源代码(第七版)》涵盖了Java编程语言的基础和核心概念,是学习和深入理解Java的宝贵资源。这份源代码包含了书中讲解的所有示例和练习,旨在帮助读者通过实践加深对理论知识的理解。 Java是面向...

    Java核心技术原书第10版中文版.pdf

    《Java核心技术原书第10版中文版》是Java编程领域的经典教材,由美国著名计算机科学家Cay S. Horstmann撰写,并由周立新等翻译成中文。这本书全面覆盖了Java开发的基础知识,是Java程序员必备的学习资料之一。下面...

    java核心技术卷

    本资源为“java核心技术卷(chm)”版本,是Prentice Hall PTR出版的第七版《Core Java 2 Volume I》的电子版,包含丰富的编程知识和实践案例。 在Java编程中,核心知识点涵盖了以下几个方面: 1. **Java基础**:...

    《Java核心技术 卷1 基础知识 原书第8版》 PDF+高清+影印+全书签.rar

    《Java核心技术 卷1 基础知识 原书第8版》是Java开发者必读的经典之作,全面深入地讲解了Java编程的基础概念和技术。这本书涵盖了从Java语言的语法到面向对象编程的核心原理,再到类库的使用,是学习Java开发的权威...

    Java核心技术第九版卷1,2中英高清版及源码

    Java核心技术是Java编程领域的一本经典著作,涵盖了Java语言的基础和高级特性,是广大开发者学习和进阶的重要参考资料。第九版卷1和卷2分别深入探讨了Java平台的核心概念和技术,包括类库、API和编程实践。以下是这...

Global site tag (gtag.js) - Google Analytics