当前位置:   article > 正文

Android java基础_类的封装

Android java基础_类的封装

一.面向对象编程的引入

写一个简单的程序输出张三,李四的名字

  1. class Person {
  2. String name;
  3. String getName() {
  4. return "guangdong "+name;
  5. }
  6. };
  7. public class Oop {
  8. public static void main(String args[]) {
  9. Person p1 = new Person();
  10. p1.name = "zhangsan";
  11. Person p2 = new Person();
  12. p2.name = "lisi";
  13. System.out.println(p1.getName());
  14. System.out.println(p2.getName());
  15. }
  16. }

运行结果:

  1. root@ubuntu:/home/topeet/guyilian# javac Oop.java
  2. root@ubuntu:/home/topeet/guyilian# java Oop
  3. guangdong zhangsan
  4. guangdong lisi

在以上代码的基础上我们,添加构造函数,在定义对象的时候就把名字传递过去,构造函数的名字跟类名一样,在构造这个对象的时候就会自动执行这个构造方法。

  1. class Person {
  2. String name;
  3. String getName() {
  4. return "guangdong "+name;
  5. }
  6. /* construct function */
  7. public Person (String n) {
  8. name = n;
  9. }
  10. };
  11. public class Oop2 {
  12. public static void main(String args[]) {
  13. Person p1 = new Person("zhangsan");
  14. Person p2 = new Person("lisi");
  15. System.out.println(p1.getName());
  16. System.out.println(p2.getName());
  17. }
  18. }

运行结果:

  1. root@ubuntu:/home/topeet/guyilian# javac Oop2.java
  2. root@ubuntu:/home/topeet/guyilian# java Oop2
  3. guangdong zhangsan
  4. guangdong lisi

在5代码的基础上,进行构造函数的重载,同时引入this,如果在一个类里面,类的属性与函数的参数名同名,我们加上this修饰表示是当前对象的属性

  1. class Person {
  2. String name;
  3. int age;
  4. String getName() {
  5. return "guangdong "+name;
  6. }
  7. /* construct method */
  8. public Person () {
  9. name = "null";
  10. age = 0;
  11. }
  12. public Person (String name) {
  13. this.name = name;
  14. }
  15. public Person (String name, int age) {
  16. this.name = name;
  17. this.age = age;
  18. }
  19. };
  20. public class Oop3 {
  21. public static void main(String args[]) {
  22. Person p1 = new Person("zhangsan");
  23. Person p2 = new Person("lisi");
  24. Person p3 = new Person();
  25. Person p4 = new Person("wangwu", 6);
  26. System.out.println(p1.getName());
  27. System.out.println(p2.getName());
  28. System.out.println(p3.getName());
  29. System.out.println(p4.getName());
  30. }
  31. }

运行结果:

  1. root@ubuntu:/home/topeet/guyilian# javac Oop3.java
  2. root@ubuntu:/home/topeet/guyilian# java Oop3
  3. guangdong zhangsan
  4. guangdong lisi
  5. guangdong null
  6. guangdong wangwu

在以上代码的基础上,我们添加类方法printPerson,那样我们不需要定义具体的类对象我们就可以直接用这个方法,同时我们添加一个类属性count,用来统计人数的多少。

  1. class Person {
  2. static int count;
  3. String name;
  4. int age;
  5. String getName() {
  6. return "guangdong "+name;
  7. }
  8. /* construct method */
  9. public Person () {
  10. count++;
  11. name = "null";
  12. age = 0;
  13. }
  14. public Person (String name) {
  15. count++;
  16. this.name = name;
  17. }
  18. public Person (String name, int age) {
  19. count++;
  20. this.name = name;
  21. this.age = age;
  22. }
  23. static void printPerson () {
  24. System.out.println("This is a class of Person");
  25. }
  26. };
  27. public class Oop4 {
  28. public static void main(String args[]) {
  29. Person p1 = new Person("zhangsan");
  30. Person p2 = new Person("lisi");
  31. Person p3 = new Person();
  32. Person p4 = new Person("wangwu", 6);
  33. System.out.println(p1.getName());
  34. System.out.println(p2.getName());
  35. System.out.println(p3.getName());
  36. System.out.println(p4.getName());
  37. Person.printPerson();
  38. System.out.println(Person.count);
  39. }
  40. }

运行结果:

  1. root@ubuntu:/home/topeet/guyilian# javac Oop4.java
  2. root@ubuntu:/home/topeet/guyilian# java Oop4
  3. guangdong zhangsan
  4. guangdong lisi
  5. guangdong null
  6. guangdong wangwu
  7. This is a class of Person
  8. 4

在以上代码的基础上,我们引入构造代码块, 每实例化一个对象前,都执行;先于构造方法执行。以上例子中我们要在每个构造函数进行count ++,有了构造代码块我们只需要在构造代码块写一次就够了。同时引入静态构造代码块,实例化第一个对象前,执行;只执行一次。

  1. class Person {
  2. static int count;
  3. String name;
  4. int age;
  5. String getName() {
  6. return "guangdong "+name;
  7. }
  8. static {
  9. System.out.println("static block");
  10. }
  11. {
  12. System.out.println("construct block");
  13. count ++;
  14. }
  15. /* construct method */
  16. public Person () {
  17. System.out.println("construct method: Person 1");
  18. name = "null";
  19. age = 0;
  20. }
  21. public Person (String name) {
  22. System.out.println("construct method: Person 2");
  23. this.name = name;
  24. }
  25. public Person (String name, int age) {
  26. System.out.println("construct method: Person 3");
  27. this.name = name;
  28. this.age = age;
  29. }
  30. static void printPerson () {
  31. System.out.println("This is a class of Person");
  32. }
  33. };
  34. public class Oop5 {
  35. public static void main(String args[]) {
  36. Person p1 = new Person("zhangsan");
  37. Person p2 = new Person("lisi");
  38. Person p3 = new Person();
  39. Person p4 = new Person("wangwu", 6);
  40. System.out.println(p1.getName());
  41. System.out.println(p2.getName());
  42. System.out.println(p3.getName());
  43. System.out.println(p4.getName());
  44. Person.printPerson();
  45. System.out.println(Person.count);
  46. }
  47. }

运行结果:

  1. root@ubuntu:/home/topeet/guyilian# javac Oop5.java
  2. root@ubuntu:/home/topeet/guyilian# java Oop5
  3. static block
  4. construct block
  5. construct method: Person 2
  6. construct block
  7. construct method: Person 2
  8. construct block
  9. construct method: Person 1
  10. construct block
  11. construct method: Person 3
  12. guangdong zhangsan
  13. guangdong lisi
  14. guangdong null
  15. guangdong wangwu
  16. This is a class of Person
  17. 4

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/96245
推荐阅读
相关标签
  

闽ICP备14008679号