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 848java lesson 20 1. 要想使用反射,首先需要获得 ... -
已前的学习笔记java lesson 19
2012-01-03 13:25 710java lesson 19 1. 当遍历集合或数组时,如果需 ... -
已前的学习笔记java lesson 18
2012-01-03 13:23 792java lesson 18 1. 有这样一个类: // ge ... -
已前的学习笔记java lesson 17
2012-01-03 13:22 701java lesson 17 1. 当向ArrayList添加 ... -
已前的学习笔记java lesson 16
2012-01-02 15:54 806java lesson 16 1. 对于Java中 ... -
已前的学习笔记java lesson 15
2012-01-02 15:52 866java lesson 15 1. 包装类( ... -
已前的学习笔记java lesson 14
2012-01-02 15:49 844java lesson 14 1. 接口中所 ... -
已前的学习笔记java lesson 12
2012-01-02 15:43 695JAVA lesson 12 1. 类是一种 ... -
已前的学习笔记java lesson 11
2012-01-01 12:51 722Java lesson 11 1. 如果一个类包含了属性与方法 ... -
已前的学习笔记java lesson 11
2011-12-31 15:02 0Java lesson 11 1. 如果一个类包含了属性与方法 ... -
已前的学习笔记java lesson 10
2011-12-31 14:42 729Java lesson 10 1. 类中的属性又叫做成员变量( ... -
已前的学习笔记java lesson 9
2011-12-31 14:17 688Java lesson 9 1. 面向对象 ... -
已前的学习笔记java lesson 8
2011-12-31 14:00 780Java lesson 8 1. break语句:经常用在循环 ... -
已前的学习笔记java lesson 7
2011-12-31 12:00 689Java lesson 7 1. Java中的循环控制语句一共 ... -
已前的学习笔记java lesson 6
2011-12-31 11:31 788Java lesson 6 1. 条件运算符(三元表达式),其 ... -
已前的学习笔记java lesson 5
2011-12-30 22:29 707Java lesson 5 运算符 关系运算符 1.大于(&g ... -
已前的学习笔记java lesson 4
2011-12-30 21:33 725Java lesson 4 运算符(operator) pub ... -
已前的学习笔记java lesson 3
2011-12-30 21:02 606Java lesson 3 Pitfall of primit ... -
已前的学习笔记java lesson 2
2011-12-30 20:02 667Java lesson 2 Primitive date ty ... -
已前的学习笔记java lesson 1
2011-12-30 18:15 636Lesson 1 Java se java standard ...
相关推荐
java技术从入门到精通(孙鑫)学习笔记-Lesson2
java技术从入门到精通(孙鑫)学习笔记Lesson4
【Java学习笔记】是针对Java编程语言的一份详尽的学习资料,主要由“圣思源”提供,旨在帮助初学者和进阶者深入理解和掌握Java技术。这份笔记可能包含了从基础语法到高级特性的全面讲解,结合了理论与实践,通过实例...
"java技术从入门到精通(孙鑫)学习笔记Lesson1"涵盖了Java的基础知识,包括JDK、JRE、J2SE、J2EE和J2ME等核心概念。 JDK,全称为Java Develop Kit,是Java开发工具包,包含了编译器、调试器和各种工具,用于编写、...
java技术从入门到精通(孙鑫)学习笔记Lesson3(接口)
java技术从入门到精通(孙鑫)学习笔记Lesson10(网络编程)
Java 多线程是编程中的重要概念,尤其在并发处理和高效系统设计中扮演着关键角色。本节主要探讨了Java中的线程概念以及如何创建...通过不断的实践和学习,可以更好地利用Java的多线程特性来提升软件的性能和用户体验。
【Java技术从入门到精通——Lesson3学习笔记】 在Java编程语言中,包(package)是一种组织类的方式,它的引入主要是为了管理和解决大型项目中大量类的命名冲突问题。包在Java中扮演着类似文件系统目录的角色,允许...
本篇笔记主要关注的是继承这一概念。 继承允许我们创建一个新类,这个新类可以从现有的类(父类或超类)中继承属性和行为。这样做的好处是可以减少代码重复,提高代码的复用性,并且使得类之间的关系更加清晰。在...
面向对象编程是Java技术的核心,它是以对象为...理解这些概念是深入学习Java技术的基础,也是成为一名精通Java的程序员所必需的。通过实践和不断学习,你可以更好地掌握面向对象编程的精髓,提高编程效率和代码质量。
本篇笔记主要讨论了几个关键的数据结构,包括LinkedList、ArrayList以及HashSet,并通过实例展示了它们的用法。 首先,LinkedList是一个实现了List接口的类,它采用双向循环链表实现。这意味着每个节点包含一个数据...
通过学习这个“圣思园Java.web笔记”,开发者可以系统地掌握Java Web开发的基本技能,为构建动态、交互性强的Web应用程序打下坚实的基础。无论是初学者还是有经验的开发者,都能从中受益,提升自己的技术水平。
【压缩包子文件的文件名称列表】:由于只给出了“two lesson”这一条信息,我们可以假设压缩包内包含了一系列与Java编程第二课相关的文件,可能有PPT课件、代码示例、笔记文档、练习题等,用于帮助学习者理解并掌握...
《Java学习》是一个全面深入的Java编程学习资源,包含了丰富的笔记和配套代码,旨在帮助学习者更好地理解和掌握Java编程语言。这个压缩包文件是学习Java过程中的重要参考资料,它包括了多个子目录,每个子目录代表了...
【标题】:“小贝程序员生活\课件\java\javaclass\thirteen lesson.rar” 提供的是一份关于Java编程的课程资料,其中包含了第十三课的内容。这个压缩包很可能是针对初学者或者有一定基础的Java开发者设计的,旨在...
:仅列出“eighteen lesson”,这可能是压缩包内的一个目录或者一系列文件的总称,可能包括PPT课件、PDF讲义、Java源代码文件(.java)、执行脚本(.bat或.sh)、笔记文档(.txt或.md)等,用于辅助学习第18课的Java...
描述中同样提到“小贝程序员生活\课件\java\javaclass\one lesson.rar”,这暗示了这个压缩包的内容与Java编程语言的“javaclass”部分相关,可能包含课件、笔记、代码示例或教学视频等学习资源。"javaclass"通常指...
描述中提到的路径结构暗示这是一个关于Java类和对象的学习资料,可能包括PPT、笔记、代码示例等。"小贝程序员生活"可能是讲师或课程系列的名字,而"\java\javaclass"表明内容专注于Java语言的基础和高级特性,特别是...
【压缩包子文件的文件名称列表】:仅给出“nine lesson”,这可能是压缩包内的主目录或者文件夹名,里面可能包含了该课程的PPT、代码示例、笔记文档、视频教程等各类学习资源,帮助学习者理解和实践Java类的使用。...