No_16_0229 Java基礎学習9日目

117544 ワード

ドキュメントのバージョン
開発ツール
テストプラットフォーム
プロジェクト名
日付
作成者
コメント
V1.0
2016.02.29
lutianfei
none
finalキーワード
マルチステート
マルチステートの概要
マルチステートの分類:
マルチステートのメンバー・アクセスの特徴:
マルチステートの長所と短所
マルチステートにおけるモデルチェンジ問題
マルチステートでの継承練習
抽象クラス
抽象クラスの概要
抽象クラスの特徴
抽象クラスのメンバーの特徴
抽象クラスのいくつかの小さな問題
インタフェース
インタフェースの概要
インタフェースの特徴
インタフェースメンバーの特徴
クラスとクラス、クラスとインタフェース、インタフェースとインタフェースの関係
抽象クラスとインタフェースの違い
finalキーワード
  • finalキーワード、修飾可能 .
  • 特徴:
  • 修飾された 、クラスは継承できない
  • 修飾された 変数が定数になり、一度だけ付与される
  • 修飾されている 方法が書き換えられない
  • finalキーワード面接問題
  • Eg 1:final修飾局所変数
  • メソッド内部では、この変数は変更できない
  • メソッド宣言では、 に分かれている場合
  • 基本タイプは、値が変更できない
  • 参照タイプは、アドレス値は変更できませんが、そのオブジェクトスタックメモリの値は変更できます.


  • Eg 2:final修飾変数の初期化タイミング
  • 対象構造が完成するまで
  •  
       
    1. class Student {
    2. int age = 10;
    3. }
    4. class FinalTest {
    5. public static void main(String[] args) {
    6. //
    7. int x = 10;
    8. x = 100;
    9. System.out.println(x);
    10. final int y = 10;
    11. // y
    12. //y = 100;
    13. System.out.println(y);
    14. System.out.println("--------------");
    15. //
    16. Student s = new Student();
    17. System.out.println(s.age);
    18. s.age = 100;
    19. System.out.println(s.age);
    20. System.out.println("--------------");
    21. final Student ss = new Student();
    22. System.out.println(ss.age);
    23. ss.age = 100;
    24. System.out.println(ss.age);
    25. //
    26. // ss
    27. ss = new Student();
    28. }
    29. }

    • , 。
        • 。 m = new ();
        • , 。
          • d = new ();
        • Fu f = new Zi();

      • class Fu{}
      • class Zi extends Fu{}
      • Fu f = new Zi();
      • abstract class Fu{}
      • class Zi extends Fu{}
      • Fu f = new Zi();
      • interface Fu{}
      • class Zi implements Fu{}
      • Fu f = new Zi();

    • A: :

    • B: : , ,

    • C: : 。 , 。

    • D: : , 。

      • ( , , , )
     
       
    1. /*
    2. : ( ), 。
    3. , 。
    4. ( , , )。
    5. A: 。
    6. B: 。
    7. , 。
    8. d = new ();
    9. d.show();
    10. d = new ();
    11. d.show();
    12. C: 。
    13. f = new ();
    14. */
    15. class Fu {
    16. public int num = 100;
    17. public void show() {
    18. System.out.println("show Fu");
    19. }
    20. public static void function() {
    21. System.out.println("function Fu");
    22. }
    23. }
    24. class Zi extends Fu {
    25. public int num = 1000;
    26. public int num2 = 200;
    27. public void show() {
    28. System.out.println("show Zi");
    29. }
    30. public void method() {
    31. System.out.println("method zi");
    32. }
    33. public static void function() {
    34. System.out.println("function Zi");
    35. }
    36. }
    37. class DuoTaiDemo {
    38. public static void main(String[] args) {
    39. // 。
    40. // f = new ();
    41. Fu f = new Zi();
    42. System.out.println(f.num);
    43. //
    44. //System.out.println(f.num2);
    45. f.show();
    46. //
    47. //f.method();
    48. f.function();
    49. }
    50. }
    51. /*
    52. * :
    53. 100
    54. show Zi
    55. function Fu
    56. */


      • ( )
      • ( )
    • ?

      • , 。( , )
      • : 。
        • Zi z = (Zi)f; // f Zi
    • : , 。

     
       
    1. // :
    2. class {
    3. public int age = 40;
    4. public void teach() {
    5. System.out.println(" JavaSE");
    6. }
    7. }
    8. class extends {
    9. public int age = 20;
    10. public void teach() {
    11. System.out.println(" ");
    12. }
    13. public void playGame() {
    14. System.out.println(" ");
    15. }
    16. }
    17. //Java , ,
    18. // , , 。 , ?
    19. // , , 。
    20. //
    21. k = new ();
    22. //
    23. System.out.println(k .age); //40
    24. k .teach(); //
    25. //k .playGame(); // , !
    26. // ,
    27. // ,
    28. //
    29. k = ( ) k ;
    30. System.out.println(k.age); //20
    31. k.teach(); //
    32. k.playGame(); //


     
       
    1. class Animal {
    2. public void eat(){
    3. System.out.println(" ");
    4. }
    5. }
    6. class Dog extends Animal {
    7. public void eat() {
    8. System.out.println(" ");
    9. }
    10. public void lookDoor() {
    11. System.out.println(" ");
    12. }
    13. }
    14. class Cat extends Animal {
    15. public void eat() {
    16. System.out.println(" ");
    17. }
    18. public void playGame() {
    19. System.out.println(" ");
    20. }
    21. }
    22. class DuoTaiTest {
    23. public static void main(String[] args) {
    24. //
    25. Animal a = new Dog();
    26. a.eat();
    27. System.out.println("--------------");
    28. //
    29. Dog d = (Dog)a;
    30. d.eat();
    31. d.lookDoor();
    32. System.out.println("--------------");
    33. //
    34. a = new Cat();
    35. a.eat();
    36. System.out.println("--------------");
    37. //
    38. Cat c = (Cat)a;
    39. c.eat();
    40. c.playGame();
    41. System.out.println("--------------");
    42. }
    43. }


     
       
    1. class Person {
    2. public void eat() {
    3. System.out.println(" ");
    4. }
    5. }
    6. class SouthPerson extends Person {
    7. public void eat() {
    8. System.out.println(" , ");
    9. }
    10. public void jingShang() {
    11. System.out.println(" ");
    12. }
    13. }
    14. class NorthPerson extends Person {
    15. public void eat() {
    16. System.out.println(" , ");
    17. }
    18. public void yanJiu() {
    19. System.out.println(" ");
    20. }
    21. }
    22. class DuoTaiTest2 {
    23. public static void main(String[] args) {
    24. //
    25. //
    26. Person p = new SouthPerson();
    27. p.eat();
    28. System.out.println("-------------");
    29. SouthPerson sp = (SouthPerson)p;
    30. sp.eat();
    31. sp.jingShang();
    32. System.out.println("-------------");
    33. //
    34. p = new NorthPerson();
    35. p.eat();
    36. System.out.println("-------------");
    37. NorthPerson np = (NorthPerson)p;
    38. np.eat();
    39. np.yanJiu();
    40. }
    41. }
    42. /*
    43. ,
    44. -------------
    45. ,
    46. -------------
    47. ,
    48. -------------
    49. ,
    50. */


    • Eg:( )

     
       
    1. /*
    2. : , 。
    3. , 。
    4. , 。
    5. */
    6. class A {
    7. public void show() {
    8. show2();
    9. }
    10. public void show2() {
    11. System.out.println(" ");
    12. }
    13. }
    14. class B extends A {
    15. /*
    16. public void show() {
    17. show2();
    18. }
    19. */
    20. public void show2() {
    21. System.out.println(" ");
    22. }
    23. }
    24. class C extends B {
    25. public void show() {
    26. super.show();
    27. }
    28. public void show2() {
    29. System.out.println(" ");
    30. }
    31. }
    32. public class DuoTaiTest4 {
    33. public static void main(String[] args) {
    34. A a = new B();
    35. a.show();
    36. B b = new C();
    37. b.show();
    38. }
    39. }
    40. // :
    41. //
    42. //


    • , 。 , 。 , , , ,。 Java , ( )

    • abstract
        • abstract class {}
        • public abstract void eat();
    • ( ?)
      • , 。 , 。
     
       
    1. //abstract class Animal //
    2. abstract class Animal {
    3. //
    4. //public abstract void eat(){} // , 。
    5. public abstract void eat();
    6. public Animal(){}
    7. }
    8. //
    9. abstract class Dog extends Animal {}
    10. // ,
    11. class Cat extends Animal {
    12. public void eat() {
    13. System.out.println(" ");
    14. }
    15. }
    16. class AbstractDemo {
    17. public static void main(String[] args) {
    18. //
    19. //Animal ;
    20. //Animal a = new Animal();
    21. //
    22. Animal a = new Cat();
    23. a.eat();
    24. }
    25. }


      • , ?
     
       
    1. //
    2. abstract class Animal {
    3. //
    4. private String name;
    5. //
    6. private int age;
    7. public Animal() {}
    8. public Animal(String name,int age) {
    9. this.name = name;
    10. this.age = age;
    11. }
    12. public String getName() {
    13. return name;
    14. }
    15. public void setName(String name) {
    16. this.name = name;
    17. }
    18. public int getAge() {
    19. return age;
    20. }
    21. public void setAge(int age) {
    22. this.age = age;
    23. }
    24. //
    25. public abstract void eat();
    26. }
    27. //
    28. class Dog extends Animal {
    29. public Dog() {}
    30. public Dog(String name,int age) {
    31. super(name,age); // !!!
    32. }
    33. public void eat() {
    34. System.out.println(" ");
    35. }
    36. }
    37. //
    38. class Cat extends Animal {
    39. public Cat() {}
    40. public Cat(String name,int age) {
    41. super(name,age);
    42. }
    43. public void eat() {
    44. System.out.println(" ");
    45. }
    46. }
    47. //
    48. class AbstractTest {
    49. public static void main(String[] args) {
    50. //
    51. //
    52. // 1:
    53. Dog d = new Dog();
    54. d.setName(" ");
    55. d.setAge(3);
    56. System.out.println(d.getName()+"---"+d.getAge());
    57. d.eat();
    58. // 2:
    59. Dog d2 = new Dog(" ",3);
    60. System.out.println(d2.getName()+"---"+d2.getAge());
    61. d2.eat();
    62. System.out.println("---------------------------");
    63. Animal a = new Dog();
    64. a.setName(" ");
    65. a.setAge(3);
    66. System.out.println(a.getName()+"---"+a.getAge());
    67. a.eat();
    68. Animal a2 = new Dog(" ",3);
    69. System.out.println(a2.getName()+"---"+a2.getAge());
    70. a2.eat();
    71. // :
    72. }
    73. }


     
       
    1. //
    2. abstract class Teacher {
    3. //
    4. private String name;
    5. //
    6. private int age;
    7. public Teacher() {}
    8. public Teacher(String name,int age) {
    9. this.name = name;
    10. this.age = age;
    11. }
    12. public String getName() {
    13. return name;
    14. }
    15. public void setName(String name) {
    16. this.name = name;
    17. }
    18. public int getAge() {
    19. return age;
    20. }
    21. public void setAge(int age) {
    22. this.age = age;
    23. }
    24. //
    25. public abstract void teach();
    26. }
    27. //
    28. class BasicTeacher extends Teacher {
    29. public BasicTeacher(){}
    30. public BasicTeacher(String name,int age) {
    31. super(name,age);
    32. }
    33. public void teach() {
    34. System.out.println(" JavaSE");
    35. }
    36. }
    37. //
    38. class WorkTeacher extends Teacher {
    39. public WorkTeacher(){}
    40. public WorkTeacher(String name,int age) {
    41. super(name,age);
    42. }
    43. public void teach() {
    44. System.out.println(" JavaEE");
    45. }
    46. }
    47. class AbstractTest2 {
    48. public static void main(String[] args) {
    49. // ,
    50. // ( )
    51. //
    52. Teacher t = new BasicTeacher();
    53. t.setName(" ");
    54. t.setAge(30);
    55. System.out.println(t.getName()+"---"+t.getAge());
    56. t.teach();
    57. System.out.println("--------------");
    58. t = new BasicTeacher(" ",30);
    59. System.out.println(t.getName()+"---"+t.getAge());
    60. t.teach();
    61. System.out.println("--------------");
    62. //
    63. t = new WorkTeacher();
    64. t.setName(" ");
    65. t.setAge(27);
    66. System.out.println(t.getName()+"---"+t.getAge());
    67. t.teach();
    68. System.out.println("--------------");
    69. t = new WorkTeacher(" ",27);
    70. System.out.println(t.getName()+"---"+t.getAge());
    71. t.teach();
    72. }
    73. }


    • , ? , ?
    • abstract
      • private
      • final
      • static ( )

    • , 。 , , : , , 。 , , 。 , , , 。
      ,Java , , , 。

    • interface
      • interface {}
    • implements
      • class implements {}
    • ( ?)
      • , 。 , 。
    • ( ):

      • : ,
      • :
      • ( )
      • ( )
      • ( )

      • public static final
      • , , 。
      • :Object。( Object 。 Object )
      • public abstract

    ,

      • , ,
      • , ,

        • : , ;
        • : , ;
        • : ;
      • , ,
      • , ,
      • :”is a” 。
      • :”like a” 。
     
       
    1. /*
    2. ,
    3. ,
    4. ,
    5. , , :
    6. ,
    7. ();
    8. (){}
    9. */
    10. //
    11. interface Jumpping {
    12. //
    13. public abstract void jump();
    14. }
    15. //
    16. abstract class Animal {
    17. //
    18. private String name;
    19. //
    20. private int age;
    21. public Animal() {}
    22. public Animal(String name,int age) {
    23. this.name = name;
    24. this.age = age;
    25. }
    26. public String getName() {
    27. return name;
    28. }
    29. public void setName(String name) {
    30. this.name = name;
    31. }
    32. public int getAge() {
    33. return age;
    34. }
    35. public void setAge(int age) {
    36. this.age = age;
    37. }
    38. // ();
    39. public abstract void eat();
    40. // (){}
    41. public void sleep() {
    42. System.out.println(" ");
    43. }
    44. }
    45. //
    46. class Cat extends Animal {
    47. public Cat(){}
    48. public Cat(String name,int age) {
    49. super(name,age);
    50. }
    51. public void eat() {
    52. System.out.println(" ");
    53. }
    54. }
    55. //
    56. class Dog extends Animal {
    57. public Dog(){}
    58. public Dog(String name,int age) {
    59. super(name,age);
    60. }
    61. public void eat() {
    62. System.out.println(" ");
    63. }
    64. }
    65. //
    66. class JumpCat extends Cat implements Jumpping {
    67. public JumpCat() {}
    68. public JumpCat(String name,int age) {
    69. super(name,age);
    70. }
    71. public void jump() {
    72. System.out.println(" ");
    73. }
    74. }
    75. //
    76. class JumpDog extends Dog implements Jumpping {
    77. public JumpDog() {}
    78. public JumpDog(String name,int age) {
    79. super(name,age);
    80. }
    81. public void jump() {
    82. System.out.println(" ");
    83. }
    84. }
    85. class InterfaceTest {
    86. public static void main(String[] args) {
    87. //
    88. JumpCat jc = new JumpCat();
    89. jc.setName(" A ");
    90. jc.setAge(3);
    91. System.out.println(jc.getName()+"---"+jc.getAge());
    92. jc.eat();
    93. jc.sleep();
    94. jc.jump();
    95. System.out.println("-----------------");
    96. JumpCat jc2 = new JumpCat(" ",2);
    97. System.out.println(jc2.getName()+"---"+jc2.getAge());
    98. jc2.eat();
    99. jc2.sleep();
    100. jc2.jump();
    101. // 。
    102. }
    103. }



    (Wiz)


    :https://www.cnblogs.com/lutianfei/p/5233377.html