java lesson 13
Java SE Lesson 2 Java SE Lesson 2Java SE Lesson 2Java SE Lesson 2Java SE Lesson 2 Java SE Lesson 2Java SE Lesson 2Java SE Lesson 2 Java SE Lesson 2Java SE Lesson 2Java SE Lesson 2
1. 多态:父类型的引用可以指向子对象。
2. Parent p = new Child();Parent p = new Child(); Parent p = new Child();Parent p = new Child();Parent p = new Child();Parent p = new Child();Parent p = new Child();Parent p = new Child();Parent p = new Child();Parent p = new Child();Parent p = new Child();Parent p = new Child(); Parent p = new Child(); Parent p = new Child();Parent p = new Child();Parent p = new Child();当使用多态方式调法时,首先检查父类中是否有 sing() sing() sing()方法, 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 sing()sing()sing()sing()sing() 方法。 方法。
3. 一共有两种类型的强制转换:
a) 向上类型转换( 向上类型转换( upcastupcastupcastupcast upcast):比如说将 ):比如说将 ):比如说将 Cat Cat类型转换为 Animal Animal 类型 ,即将子类型 ,即将子转换为父类型。
对于向上,不需要显式指定b) 向下类型转换( 向下类型转换( downcastdowncastdowncastdowncastdowncastdowncast downcast):比如将 ):比如将 ):比如将 Animal Animal 类型转换为 类型转换为 Cat Cat类型 。即将父类型 。即将父转换为子类型。对于向下,必须要显式指定 转换为子类型。对于向下,必须要显式指定 转换为子类型。对于向下,必须要显式指定 转换为子类型。对于向下,必须要显式指定 转换为子类型。对于向下,必须要显式指定 转换为子类型。对于向下,必须要显式指定 转换为子类型。对于向下,必须要显式指定 (必须要使用强制类型 (必须要使用强制类型 (必须要使用强制类型 (必须要使用强制类型 转换) 。
4. 抽象类( 抽象类( abstract class abstract classabstract classabstract classabstract class abstract classabstract classabstract class ): 使用了 abstract abstractabstractabstractabstract 关键字所修饰的 关键字所修饰的 类叫做抽象。 抽 象类无法实例化,也就是说不能 newnew 出来一个抽象类的对(实例)。 出来一个抽象类的对(实例)。 出来一个抽象类的对(实例)。
5. 抽象方法( abstract method abstract methodabstract methodabstract methodabstract method abstract methodabstract method abstract methodabstract methodabstract methodabstract method): 使用 abstractabstractabstractabstractabstractabstract abstract关键字所修饰的方 法叫做抽象关键字所修饰的方 法叫做抽象法。 抽象方法需要定义在类中 抽象方法需要定义在类中 抽象方法需要定义在类中 抽象方法需要定义在类中 抽象方法需要定义在类中 抽象方法需要定义在类中 抽象方法需要定义在类中 抽象方法需要定义在类中 抽象方法需要定义在类中 。相对于抽象方法,之前所定义的叫 。相对于抽象方法,之前所定义的叫 。相对于抽象方法,之前所定义的叫 做具体方法(有声明,实现)。 做具体方法(有声明,实现)。
6. 如果一个类包含了抽象方法,那么这定是。
7. 如果某个类是抽象,那么该可以包含具体方法(有声明、实现)。 如果某个类是抽象,那么该可以包含具体方法(有声明、实现)。
8. 如果一个类中包含了抽象方法,那么这定要声明成 abstract class abstract classabstract classabstract classabstract class abstract classabstract classabstract classabstract class ,也 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 包含抽象方法,也可以具体。
9. 无论何种情况,只要一个类是抽象那么这就法实例化。
10. 在子类 继承父(是个抽象)的情况下,那么该必须要实现在子类 继承父(是个抽象)的情况下,那么该必须要实现在子类 继承父(是个抽象)的情况下,那么该必须要实现在子类 继承父(是个抽象)的情况下,那么该必须要实现中所定义的有 抽象方法;否则,该子类需要声明成一个 abstract class abstract classabstract classabstract classabstract class abstract classabstract classabstract class abstract class 。
11. 接口( interface interfaceinterface interface ): 接口的地位等同于 接口的地位等同于 classclass class,接口中的所有方 法都是抽象接口中的所有方 法都是抽象接口中的所有方 法都是抽象接口中的所有方 法都是抽象接口中的所有方 法都是抽象接口中的所有方 法都是抽象接口中的所有方 法都是抽象接口中的所有方 法都是抽象法。在声明接口中的方法时,可以使用 。在声明接口中的方法时,可以使用 abstract abstractabstractabstractabstractabstractabstract关键字,也可以不使用。通 常情况下,都会省略掉 abstract abstractabstractabstractabstract 关键字。
12. 可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也方法,而接口中只能有抽象不具体)。 方法,而接口中只能有抽象不具体)。
13. 类可以 实现 接口。 实现使用关键字 实现使用关键字 implements implements implementsimplementsimplementsimplements表示,代了 某个类实现表示,代了 某个类实现某个接口。
14. 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 该类是个抽象,那么就无需实现接口中的方法了。
15. Java JavaJava是单继承的,也就说某个类只能有唯一父;可以实现多 个接口,多之间使用逗号分隔。
16. 多态:所谓,就是父类型 的引用可以指向子对象或者接口多态:所谓,就是父类型 的引用可以指向子对象或者接口多态:所谓,就是父类型 的引用可以指向子对象或者接口多态:所谓,就是父类型 的引用可以指向子对象或者接口的引用可以指向实现该接口类例。 的引用可以指向实现该接口类例。 的引用可以指向实现该接口类例。 的引用可以指向实现该接口类例。 的引用可以指向实现该接口类例。 的引用可以指向实现该接口类例。 关于接口与实现的类之间强 关于接口与实现的类之间强 关于接口与实现的类之间强 关于接口与实现的类之间强 关于接口与实现的类之间强 制类型转换方式与父和子之间的强完全一样。
17. staticstaticstaticstaticstatic 关键字: 可以用于修饰 属性,也方法还可以用于修饰 属性,也方法还类(后面的课程讲)
18. statictatictatictatic 修饰属性: 无论一个类生成了多少对象,所有这些共同使用唯 无论一个类生成了多少对象,所有这些共同使用唯 一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他的该静态成员变量值也会随之发生化。 如果一个成员变量是 staticstaticstaticstaticstaticstatic的,
那么我们可以通过 类名 .成员变量名 成员变量名 成员变量名 的方式来使用它 的方式来使用它 (推荐使用这种方式) 。
19. staticstaticstaticstaticstatic 修饰方法: staticstaticstaticstaticstatic 修饰的方法叫做静态。 对于静态方法来说,可以 使用 类名 .方法名 方法名 的方式来访问。 的方式来访问。
20. 静态方法只能继承,不重写( 静态方法只能继承,不重写( 静态方法只能继承,不重写( 静态方法只能继承,不重写( 静态方法只能继承,不重写( 静态方法只能继承,不重写( 静态方法只能继承,不重写( OverrideOverrideOverrideOverrideOverrideOverrideOverrideOverride)。
21. finalfinal final 关键字: finalfinal final 可以修饰属性、方法类。 可以修饰属性、方法类。
22. finalfinal final 修饰类:当一个被 修饰类:当一个被 修饰类:当一个被 finalfinal final 所修饰时,表示该类是一个终态即不能被 所修饰时,表示该类是一个终态即不能被 所修饰时,表示该类是一个终态即不能被 所修饰时,表示该类是一个终态即不能被 继承。
23. finalfinal final 修饰 方法 :当一个方法被 :当一个方法被 finalfinal finalfinal所修饰时, 表示该方法是一个终态所修饰时, 表示该方法是一个终态即不能被重写( Override Override Override Override)。
24. finalfinal final 修饰属性: 当一个属性被 当一个属性被 finalfinal final 所修饰时,表示该属性不能被改写。 所修饰时,表示该属性不能被改写。
25. 当 finalfinalfinalfinalfinal修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 (比如说不能从 (比如说不能从 (比如说不能从 (比如说不能从 10 变为 20 );如果 );如果 );如果 finalfinalfinalfinalfinal修饰一个引用 类型时,表示该修饰一个引用 类型时,表示该修饰一个引用 类型时,表示该修饰一个引用 类型时,表示该修饰一个引用 类型时,表示该修饰一个引用 类型时,表示该修饰一个引用 类型时,表示该类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 的。
26. 对于 finalfinal final 类型成员变量,一般来说有两种赋初值方式: 类型成员变量,一般来说有两种赋初值方式:
a) 在声明 finalfinal final 类型的成员变量时就赋上初值 类型的成员变量时就赋上初值
b) 在声明 finalfinal final 类型的成员变量时不赋 初值,但在所有构造方法中都为其类型的成员变量时不赋 初值,但在所有构造方法中都为其类型的成员变量时不赋 初值,但在所有构造方法中都为其上初值。
27. staticstaticstaticstaticstatic 代码块 :静态代码块 :静态代码块 :静态。静态代码块的作用也是完成一些初始化工。首 静态代码块的作用也是完成一些初始化工。首 先执行静态代码块, 然后构造方法。在类被加载的时候先执行静态代码块, 然后构造方法。在类被加载的时候先执行静态代码块, 然后构造方法。在类被加载的时候而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 要将类加载到 Java JavaJava虚拟机上( JVM JVM),然后由 ),然后由 JVMJVMJVM加载这个类来生成对象。 加载这个类来生成对象。
28. 类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 次生成一个对象的时候都会调用类构造方法,所以 次生成一个对象的时候都会调用类构造方法,所以 newnew 一次就会调用构造 方法一次。
29. 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的构造方法,一直执行到最底层类。 的构造方法,一直执行到最底层类。 的构造方法,一直执行到最底层类。 的构造方法,一直执行到最底层类。 的构造方法,一直执行到最底层类。 注意:静态代码块只会执行 注意:静态代码块只会执行 注意:静态代码块只会执行 注意:静态代码块只会执行 注意:静态代码块只会执行 注意:静态代码块只会执行 注意:静态代码块只会执行 注意:静态代码块只会执行 注意:静态代码块只会执行 一次。 一次。
30. 不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的变量。可以在非静态方法中访问 静态的成员变量。
31. 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。
32. 不能在静态方法中使用 不能在静态方法中使用 不能在静态方法中使用 不能在静态方法中使用 不能在静态方法中使用 this thisthis关键字。 关键字。
Java SE Lesson 2 Java SE Lesson 2Java SE Lesson 2Java SE Lesson 2Java SE Lesson 2 Java SE Lesson 2Java SE Lesson 2Java SE Lesson 2 Java SE Lesson 2Java SE Lesson 2Java SE Lesson 2
1. 多态:父类型的引用可以指向子对象。
2. Parent p = new Child();Parent p = new Child(); Parent p = new Child();Parent p = new Child();Parent p = new Child();Parent p = new Child();Parent p = new Child();Parent p = new Child();Parent p = new Child();Parent p = new Child();Parent p = new Child();Parent p = new Child(); Parent p = new Child(); Parent p = new Child();Parent p = new Child();Parent p = new Child();当使用多态方式调法时,首先检查父类中是否有 sing() sing() sing()方法, 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 如果没有则编译错误;,再去调用子类的 sing()sing()sing()sing()sing() 方法。 方法。
3. 一共有两种类型的强制转换:
a) 向上类型转换( 向上类型转换( upcastupcastupcastupcast upcast):比如说将 ):比如说将 ):比如说将 Cat Cat类型转换为 Animal Animal 类型 ,即将子类型 ,即将子转换为父类型。
对于向上,不需要显式指定b) 向下类型转换( 向下类型转换( downcastdowncastdowncastdowncastdowncastdowncast downcast):比如将 ):比如将 ):比如将 Animal Animal 类型转换为 类型转换为 Cat Cat类型 。即将父类型 。即将父转换为子类型。对于向下,必须要显式指定 转换为子类型。对于向下,必须要显式指定 转换为子类型。对于向下,必须要显式指定 转换为子类型。对于向下,必须要显式指定 转换为子类型。对于向下,必须要显式指定 转换为子类型。对于向下,必须要显式指定 转换为子类型。对于向下,必须要显式指定 (必须要使用强制类型 (必须要使用强制类型 (必须要使用强制类型 (必须要使用强制类型 转换) 。
4. 抽象类( 抽象类( abstract class abstract classabstract classabstract classabstract class abstract classabstract classabstract class ): 使用了 abstract abstractabstractabstractabstract 关键字所修饰的 关键字所修饰的 类叫做抽象。 抽 象类无法实例化,也就是说不能 newnew 出来一个抽象类的对(实例)。 出来一个抽象类的对(实例)。 出来一个抽象类的对(实例)。
5. 抽象方法( abstract method abstract methodabstract methodabstract methodabstract method abstract methodabstract method abstract methodabstract methodabstract methodabstract method): 使用 abstractabstractabstractabstractabstractabstract abstract关键字所修饰的方 法叫做抽象关键字所修饰的方 法叫做抽象法。 抽象方法需要定义在类中 抽象方法需要定义在类中 抽象方法需要定义在类中 抽象方法需要定义在类中 抽象方法需要定义在类中 抽象方法需要定义在类中 抽象方法需要定义在类中 抽象方法需要定义在类中 抽象方法需要定义在类中 。相对于抽象方法,之前所定义的叫 。相对于抽象方法,之前所定义的叫 。相对于抽象方法,之前所定义的叫 做具体方法(有声明,实现)。 做具体方法(有声明,实现)。
6. 如果一个类包含了抽象方法,那么这定是。
7. 如果某个类是抽象,那么该可以包含具体方法(有声明、实现)。 如果某个类是抽象,那么该可以包含具体方法(有声明、实现)。
8. 如果一个类中包含了抽象方法,那么这定要声明成 abstract class abstract classabstract classabstract classabstract class abstract classabstract classabstract classabstract class ,也 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 就是说,该类一定抽象;反之如果某个那么既可以 包含抽象方法,也可以具体。
9. 无论何种情况,只要一个类是抽象那么这就法实例化。
10. 在子类 继承父(是个抽象)的情况下,那么该必须要实现在子类 继承父(是个抽象)的情况下,那么该必须要实现在子类 继承父(是个抽象)的情况下,那么该必须要实现在子类 继承父(是个抽象)的情况下,那么该必须要实现中所定义的有 抽象方法;否则,该子类需要声明成一个 abstract class abstract classabstract classabstract classabstract class abstract classabstract classabstract class abstract class 。
11. 接口( interface interfaceinterface interface ): 接口的地位等同于 接口的地位等同于 classclass class,接口中的所有方 法都是抽象接口中的所有方 法都是抽象接口中的所有方 法都是抽象接口中的所有方 法都是抽象接口中的所有方 法都是抽象接口中的所有方 法都是抽象接口中的所有方 法都是抽象接口中的所有方 法都是抽象法。在声明接口中的方法时,可以使用 。在声明接口中的方法时,可以使用 abstract abstractabstractabstractabstractabstractabstract关键字,也可以不使用。通 常情况下,都会省略掉 abstract abstractabstractabstractabstract 关键字。
12. 可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也可以将接口看作是特殊的抽象 类(中有具体方法,也方法,而接口中只能有抽象不具体)。 方法,而接口中只能有抽象不具体)。
13. 类可以 实现 接口。 实现使用关键字 实现使用关键字 implements implements implementsimplementsimplementsimplements表示,代了 某个类实现表示,代了 某个类实现某个接口。
14. 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 一个类实现了某接口,那么该必须要中声明的所有方法。如果 该类是个抽象,那么就无需实现接口中的方法了。
15. Java JavaJava是单继承的,也就说某个类只能有唯一父;可以实现多 个接口,多之间使用逗号分隔。
16. 多态:所谓,就是父类型 的引用可以指向子对象或者接口多态:所谓,就是父类型 的引用可以指向子对象或者接口多态:所谓,就是父类型 的引用可以指向子对象或者接口多态:所谓,就是父类型 的引用可以指向子对象或者接口的引用可以指向实现该接口类例。 的引用可以指向实现该接口类例。 的引用可以指向实现该接口类例。 的引用可以指向实现该接口类例。 的引用可以指向实现该接口类例。 的引用可以指向实现该接口类例。 关于接口与实现的类之间强 关于接口与实现的类之间强 关于接口与实现的类之间强 关于接口与实现的类之间强 关于接口与实现的类之间强 制类型转换方式与父和子之间的强完全一样。
17. staticstaticstaticstaticstatic 关键字: 可以用于修饰 属性,也方法还可以用于修饰 属性,也方法还类(后面的课程讲)
18. statictatictatictatic 修饰属性: 无论一个类生成了多少对象,所有这些共同使用唯 无论一个类生成了多少对象,所有这些共同使用唯 一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他一份静态的成员变量;个对象 该进行了修改,其他的该静态成员变量值也会随之发生化。 如果一个成员变量是 staticstaticstaticstaticstaticstatic的,
那么我们可以通过 类名 .成员变量名 成员变量名 成员变量名 的方式来使用它 的方式来使用它 (推荐使用这种方式) 。
19. staticstaticstaticstaticstatic 修饰方法: staticstaticstaticstaticstatic 修饰的方法叫做静态。 对于静态方法来说,可以 使用 类名 .方法名 方法名 的方式来访问。 的方式来访问。
20. 静态方法只能继承,不重写( 静态方法只能继承,不重写( 静态方法只能继承,不重写( 静态方法只能继承,不重写( 静态方法只能继承,不重写( 静态方法只能继承,不重写( 静态方法只能继承,不重写( OverrideOverrideOverrideOverrideOverrideOverrideOverrideOverride)。
21. finalfinal final 关键字: finalfinal final 可以修饰属性、方法类。 可以修饰属性、方法类。
22. finalfinal final 修饰类:当一个被 修饰类:当一个被 修饰类:当一个被 finalfinal final 所修饰时,表示该类是一个终态即不能被 所修饰时,表示该类是一个终态即不能被 所修饰时,表示该类是一个终态即不能被 所修饰时,表示该类是一个终态即不能被 继承。
23. finalfinal final 修饰 方法 :当一个方法被 :当一个方法被 finalfinal finalfinal所修饰时, 表示该方法是一个终态所修饰时, 表示该方法是一个终态即不能被重写( Override Override Override Override)。
24. finalfinal final 修饰属性: 当一个属性被 当一个属性被 finalfinal final 所修饰时,表示该属性不能被改写。 所修饰时,表示该属性不能被改写。
25. 当 finalfinalfinalfinalfinal修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 修饰一个原生数据类型时,表示该的值不能发变化 (比如说不能从 (比如说不能从 (比如说不能从 (比如说不能从 10 变为 20 );如果 );如果 );如果 finalfinalfinalfinalfinal修饰一个引用 类型时,表示该修饰一个引用 类型时,表示该修饰一个引用 类型时,表示该修饰一个引用 类型时,表示该修饰一个引用 类型时,表示该修饰一个引用 类型时,表示该修饰一个引用 类型时,表示该类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 类型不能再指向其他对象了,但该引用所的内容是可以发生变化 的。
26. 对于 finalfinal final 类型成员变量,一般来说有两种赋初值方式: 类型成员变量,一般来说有两种赋初值方式:
a) 在声明 finalfinal final 类型的成员变量时就赋上初值 类型的成员变量时就赋上初值
b) 在声明 finalfinal final 类型的成员变量时不赋 初值,但在所有构造方法中都为其类型的成员变量时不赋 初值,但在所有构造方法中都为其类型的成员变量时不赋 初值,但在所有构造方法中都为其上初值。
27. staticstaticstaticstaticstatic 代码块 :静态代码块 :静态代码块 :静态。静态代码块的作用也是完成一些初始化工。首 静态代码块的作用也是完成一些初始化工。首 先执行静态代码块, 然后构造方法。在类被加载的时候先执行静态代码块, 然后构造方法。在类被加载的时候先执行静态代码块, 然后构造方法。在类被加载的时候而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 而构造方法是在生成对象的时候执行;要想调用某个类来,首先需 要将类加载到 Java JavaJava虚拟机上( JVM JVM),然后由 ),然后由 JVMJVMJVM加载这个类来生成对象。 加载这个类来生成对象。
28. 类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个类的静态代码块只 会执行一次,是在被加载时候因为每个会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 会被加载一次,所以静态代码块也只执行;而构造方法则不然每 次生成一个对象的时候都会调用类构造方法,所以 次生成一个对象的时候都会调用类构造方法,所以 newnew 一次就会调用构造 方法一次。
29. 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 如果继承体系中既有构造方法,又静态代码块那么首先执行最顶层的类 的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的静态代码块,一直执行到最底层类 然后再去顶的构造方法,一直执行到最底层类。 的构造方法,一直执行到最底层类。 的构造方法,一直执行到最底层类。 的构造方法,一直执行到最底层类。 的构造方法,一直执行到最底层类。 注意:静态代码块只会执行 注意:静态代码块只会执行 注意:静态代码块只会执行 注意:静态代码块只会执行 注意:静态代码块只会执行 注意:静态代码块只会执行 注意:静态代码块只会执行 注意:静态代码块只会执行 注意:静态代码块只会执行 一次。 一次。
30. 不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的不能在静态方法中访问非成员 变量;可以的变量。可以在非静态方法中访问 静态的成员变量。
31. 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。 总结:静态的只能访问;非可以一切。
32. 不能在静态方法中使用 不能在静态方法中使用 不能在静态方法中使用 不能在静态方法中使用 不能在静态方法中使用 this thisthis关键字。 关键字。
发表评论
-
已前的学习笔记java lesson 20
2012-01-03 13:26 808java lesson 20 1. 要想使用反射,首先需要获得 ... -
已前的学习笔记java lesson 19
2012-01-03 13:25 670java lesson 19 1. 当遍历集合或数组时,如果需 ... -
已前的学习笔记java lesson 18
2012-01-03 13:23 764java lesson 18 1. 有这样一个类: // ge ... -
已前的学习笔记java lesson 17
2012-01-03 13:22 678java lesson 17 1. 当向ArrayList添加 ... -
已前的学习笔记java lesson 16
2012-01-02 15:54 763java lesson 16 1. 对于Java中 ... -
已前的学习笔记java lesson 15
2012-01-02 15:52 835java lesson 15 1. 包装类( ... -
已前的学习笔记java lesson 14
2012-01-02 15:49 816java lesson 14 1. 接口中所 ... -
已前的学习笔记java lesson 12
2012-01-02 15:43 658JAVA lesson 12 1. 类是一种 ... -
已前的学习笔记java lesson 11
2012-01-01 12:51 680Java lesson 11 1. 如果一个类包含了属性与方法 ... -
已前的学习笔记java lesson 11
2011-12-31 15:02 0Java lesson 11 1. 如果一个类包含了属性与方法 ... -
已前的学习笔记java lesson 10
2011-12-31 14:42 692Java lesson 10 1. 类中的属性又叫做成员变量( ... -
已前的学习笔记java lesson 9
2011-12-31 14:17 652Java lesson 9 1. 面向对象 ... -
已前的学习笔记java lesson 8
2011-12-31 14:00 745Java lesson 8 1. break语句:经常用在循环 ... -
已前的学习笔记java lesson 7
2011-12-31 12:00 654Java lesson 7 1. Java中的循环控制语句一共 ... -
已前的学习笔记java lesson 6
2011-12-31 11:31 747Java lesson 6 1. 条件运算符(三元表达式),其 ... -
已前的学习笔记java lesson 5
2011-12-30 22:29 677Java lesson 5 运算符 关系运算符 1.大于(&g ... -
已前的学习笔记java lesson 4
2011-12-30 21:33 694Java lesson 4 运算符(operator) pub ... -
已前的学习笔记java lesson 3
2011-12-30 21:02 578Java lesson 3 Pitfall of primit ... -
已前的学习笔记java lesson 2
2011-12-30 20:02 623Java lesson 2 Primitive date ty ... -
已前的学习笔记java lesson 1
2011-12-30 18:15 601Lesson 1 Java se java standard ...
相关推荐
java技术从入门到精通(孙鑫)学习笔记-Lesson2
java从入门到精通学习笔记-Lesson5(多线程).pdf
java从入门到精通学习笔记-Lesson2(面向对象下).pdf
java技术从入门到精通(孙鑫)学习笔记-Lesson2(面向对象上)
java技术从入门到精通(孙鑫)学习笔记Lesson1
java技术从入门到精通(孙鑫)学习笔记Lesson4
java技术从入门到精通(孙鑫)学习笔记Lesson3
java技术从入门到精通(孙鑫)学习笔记Lesson3(接口)
java技术从入门到精通(孙鑫)学习笔记Lesson10(网络编程)
java技术从入门到精通(孙鑫)学习笔记Lesson 6(数据结构)
─algorithms 算法 ...├─lesson-code 一些课程代码 ├─mvc mvc框架 ├─orm orm框架 ├─spring-annotation spring注解驱动开发 ├─spring-batch ├─springboot-aop springaop使用以及aop应用 │ └─
Java web lesson 1 1.html (hyper text markuo language),超文本标记语言 html 文件的后罪名一般是 .htm .html
三、从LiveJournal发展中学习 71 1、一台服务器 71 2、两台服务器 72 3、四台服务器 73 4、五台服务器 73 5、更多服务器 74 6、现在我们在哪里: 75 7、现在我们在哪里 78 8、现在我们在哪里 79 9、缓存 80...