赞
踩
写一个简单的程序输出张三,李四的名字
- class Person {
- String name;
- String getName() {
- return "guangdong "+name;
- }
- };
-
-
- public class Oop {
- public static void main(String args[]) {
- Person p1 = new Person();
- p1.name = "zhangsan";
-
- Person p2 = new Person();
- p2.name = "lisi";
-
- System.out.println(p1.getName());
- System.out.println(p2.getName());
- }
- }

运行结果:
- root@ubuntu:/home/topeet/guyilian# javac Oop.java
- root@ubuntu:/home/topeet/guyilian# java Oop
- guangdong zhangsan
- guangdong lisi
在以上代码的基础上我们,添加构造函数,在定义对象的时候就把名字传递过去,构造函数的名字跟类名一样,在构造这个对象的时候就会自动执行这个构造方法。
- class Person {
- String name;
- String getName() {
- return "guangdong "+name;
- }
-
- /* construct function */
- public Person (String n) {
- name = n;
- }
-
- };
-
-
- public class Oop2 {
- public static void main(String args[]) {
- Person p1 = new Person("zhangsan");
- Person p2 = new Person("lisi");
-
- System.out.println(p1.getName());
- System.out.println(p2.getName());
- }
- }

运行结果:
- root@ubuntu:/home/topeet/guyilian# javac Oop2.java
- root@ubuntu:/home/topeet/guyilian# java Oop2
- guangdong zhangsan
- guangdong lisi
在5代码的基础上,进行构造函数的重载,同时引入this,如果在一个类里面,类的属性与函数的参数名同名,我们加上this修饰表示是当前对象的属性
-
- class Person {
- String name;
- int age;
- String getName() {
- return "guangdong "+name;
- }
-
- /* construct method */
- public Person () {
- name = "null";
- age = 0;
- }
-
- public Person (String name) {
- this.name = name;
- }
-
- public Person (String name, int age) {
- this.name = name;
- this.age = age;
- }
-
- };
-
-
- public class Oop3 {
- public static void main(String args[]) {
- Person p1 = new Person("zhangsan");
- Person p2 = new Person("lisi");
- Person p3 = new Person();
- Person p4 = new Person("wangwu", 6);
-
- System.out.println(p1.getName());
- System.out.println(p2.getName());
- System.out.println(p3.getName());
- System.out.println(p4.getName());
- }
- }
-

运行结果:
- root@ubuntu:/home/topeet/guyilian# javac Oop3.java
- root@ubuntu:/home/topeet/guyilian# java Oop3
- guangdong zhangsan
- guangdong lisi
- guangdong null
- guangdong wangwu
在以上代码的基础上,我们添加类方法printPerson,那样我们不需要定义具体的类对象我们就可以直接用这个方法,同时我们添加一个类属性count,用来统计人数的多少。
-
- class Person {
-
- static int count;
-
- String name;
- int age;
- String getName() {
- return "guangdong "+name;
- }
-
- /* construct method */
- public Person () {
- count++;
- name = "null";
- age = 0;
- }
-
- public Person (String name) {
- count++;
- this.name = name;
- }
-
- public Person (String name, int age) {
- count++;
- this.name = name;
- this.age = age;
- }
-
- static void printPerson () {
- System.out.println("This is a class of Person");
- }
-
- };
-
-
- public class Oop4 {
- public static void main(String args[]) {
- Person p1 = new Person("zhangsan");
- Person p2 = new Person("lisi");
- Person p3 = new Person();
- Person p4 = new Person("wangwu", 6);
-
- System.out.println(p1.getName());
- System.out.println(p2.getName());
- System.out.println(p3.getName());
- System.out.println(p4.getName());
-
- Person.printPerson();
- System.out.println(Person.count);
- }
- }
-

运行结果:
- root@ubuntu:/home/topeet/guyilian# javac Oop4.java
- root@ubuntu:/home/topeet/guyilian# java Oop4
- guangdong zhangsan
- guangdong lisi
- guangdong null
- guangdong wangwu
- This is a class of Person
- 4
在以上代码的基础上,我们引入构造代码块, 每实例化一个对象前,都执行;先于构造方法执行。以上例子中我们要在每个构造函数进行count ++,有了构造代码块我们只需要在构造代码块写一次就够了。同时引入静态构造代码块,实例化第一个对象前,执行;只执行一次。
-
- class Person {
-
- static int count;
-
- String name;
- int age;
- String getName() {
- return "guangdong "+name;
- }
-
- static {
- System.out.println("static block");
- }
-
- {
- System.out.println("construct block");
- count ++;
- }
-
- /* construct method */
- public Person () {
- System.out.println("construct method: Person 1");
- name = "null";
- age = 0;
- }
-
- public Person (String name) {
- System.out.println("construct method: Person 2");
- this.name = name;
- }
-
- public Person (String name, int age) {
- System.out.println("construct method: Person 3");
- this.name = name;
- this.age = age;
- }
-
- static void printPerson () {
- System.out.println("This is a class of Person");
- }
-
- };
-
-
- public class Oop5 {
- public static void main(String args[]) {
- Person p1 = new Person("zhangsan");
- Person p2 = new Person("lisi");
- Person p3 = new Person();
- Person p4 = new Person("wangwu", 6);
-
- System.out.println(p1.getName());
- System.out.println(p2.getName());
- System.out.println(p3.getName());
- System.out.println(p4.getName());
-
- Person.printPerson();
- System.out.println(Person.count);
- }
- }
-

运行结果:
- root@ubuntu:/home/topeet/guyilian# javac Oop5.java
- root@ubuntu:/home/topeet/guyilian# java Oop5
- static block
- construct block
- construct method: Person 2
- construct block
- construct method: Person 2
- construct block
- construct method: Person 1
- construct block
- construct method: Person 3
- guangdong zhangsan
- guangdong lisi
- guangdong null
- guangdong wangwu
- This is a class of Person
- 4

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。