面向对象之构造器的知识点和演示

来源:互联网 发布:天使之城淘宝店不在了 编辑:程序博客网 时间:2024/06/06 14:28
                        类的第三个结构:构造器
1.构造器(或构造方法):constructor. 跟方法没有从属关系,是独立的

                  构造器的作用:①创建类的对象。 

                                          ②提供创建的对象的属性的初始化

2.构造器的特点   
         修饰符  类名 (参数列表) {
        初始化语句;
         }      
        1.它具有与类相同的名称,一般权限public(默认与类的权限一样)。
        2.它不声明返回值类型。(与声明为void不同)

        3.不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值

3.构造器使用说明:
 * 1.当我们没显示的定义类的构造器时,系统会默认提供一个空参的构造器。
 * 2.如何定义类的构造器: 权限修饰符  类名(形参列表){  }
 * 3.一个类中可以定义多个构造器,彼此之间构成重载
 * 4.一旦我们显示的提供类的构造器,那么系统就不再提供默认的空参的构造器了。类中,      一定会有构造器!
   5.Java语言中,每个类(包括抽象类)都至少有一个构造器

4.构造器重载
     1.类的多个构造器构成重载,也为对象的创建提供了更加灵活的选择了。
     2.同一类中用this(形参)来调用重载的构造器的this(形参)要放在首行。

     3.(继承时,子类用super(形参)形式来调用父类中的构造器,但并非重载了)

5.给属性赋值顺属性赋值的顺序:①-②-③-④

            ①默认初始化  
            ②显式初始化  
            ③构造器中初始化 
            ④通过"对象.属性"或"对象.方法"的方式赋值序

 二:关键字this   

  1.this可以调用的结构:属性、方法、构造器

       this:表示当前对象或当前正在创建的对象
        它在方法内部使用,即这个方法所属对象的引用;
        它在构造器内部使用,表示该构造器正在初始化的对象
  2.this调用属性、方法:
 -->我们在方法内部,可以通过"this.属性"或"this.方法"的方式,调用当前对象的属性或方法。但是通常情况下,我  们习惯 于省略"this.".但是,如果方法的形参的变量名和类的属性相同,那么我们就必须显式的使用“this.”的方式,表明我们调用的是当前类对象的属性,而非形参的变量。

 -->我们在构造器中,可以通过“this.属性”"或"this.方法"的方式,调用当前正在创建的对象的属性或方法。但是通常情况下,我们习惯于省略"this.".但是,如果构造器的形参的变量名和类的属性相同,那么我们就必须显式的使用“this.”的方式,表明我们调用的是属性,而非形参的变量。

3.this调用构造器:
      格式:this(形参列表):调用指定形参列表的构造器
 *    说明:1.构造器中通过“this(形参列表)”调用的构造器,不能是自己调用自己!
 *              2.如果一个类中声明了n个构造器,那么最多只能有 n - 1个构造器中使用“this(形参列表),至少一个

                   不用  this().
 *              3.要求“this(形参列表)”必须声明在构造器的首行!


代码Eample:
   public class TestPerson {
public static void main(String[] args) {
Person p1 = new Person();
System.out.println(p1.getName() + ":" + p1.getAge());

Person p2 = new Person("BB",23);
int temp = p2.compare(p1);
System.out.println(temp);
}
}
class Person{
private String name;
private int age;
public Person(){
this.name = "AA"; //this 表示本题目中new的对象P2
this.age = 1;
}
public Person(String name){
this();   //表示调用上面空参构造器,不能写成this Person();
this.name = name;
}
public Person(String name,int age){
this(name); //相当于this.name =name;  只是直接调用上面的构造器。
this.age = age;
}
public String getName() {
return name;   //根return this.name结果一样,只是神略了。
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void eat(){
System.out.println("eating");
}
public void sleep(){
System.out.println("sleeping");
this.eat();//表示调用当前对象的eat()方法,跟eat():结果一样。一般要写this.eat();
}
//比较当前对象与形参的对象的age谁大。
public int compare(Person p){
if(this.age > p.age)
return 1;
else if(this.age < p.age)
return -1;
else
return 0;
}
}

阅读全文
1 0