Java学习(构造方法、this关键字、super应用)

构 造 方 法

定义:对象创建时使用的方法,即在new一个新对象时,对应构造方法,直接对属性赋值。

语句格式:    修饰符(public 等) 构造方法名(必须跟当前类名一样,否则报错)(参数列表){

}

构造方法的体现:

(1)构造方法没有返回值类型,也不需要返回值。因为它是为成员变量赋值,赋值结束,方法随之执行结束。

(2)构造方法名称必须与类名保持一致

(3)构造方法没有具体的返回值

默认构造方法与细节:

默认构造方法:如果没有显示指定构造方法,编译会在编译时自动添加默认的构造方法,如果已经指定了构造方法,则不会再添加默认构造方法。

细节:

(1)一个类中可以有多个构造方法,多个重载方法是以重载的形式存在的。

(2)构造方法是可以被private修饰的,作用是其他类无法创建此方法的对象。

 this关键词

构造方法之间的调用,可以通过this关键词来完成

构造方法调用格式

this(参数列表);

成员变量和局部变量同名问题

当在方法中出现了成员变量和局部变量重名的情况时,可以在成员变量前添加this.关键词来区分。

Super关键字

子父类中构造方法的调用:

在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的隐式super();语句

格式:

调用本类中的构造方法
this(实参列表);
调用父类中的空参数构造方法
super();
调用父类中的有参数构造方法
super(实参列表);

当父类中没有空参数构造方法时,子类的构造方法必须有显示的super语句,指定要访问的父类有参数构造方法。

子类对象创建过程的细节:

(1)只要是构造方法,第一行都有默认的super();

(2)Java中,定义了一个所有类的父类:opject

注意:

类中的构造方法默认第一行都有隐式的super()语句,在访问父类中的空参数构造方法。所以父类的构造方法既可以给自己的对象初始化也可以自己的子类对象初始化

如果默认的隐式super()语句在父类中没有对应的构造方法,那么必须在构造方法中通过this或者super的形式明确要调用的构造方法。

实例:

package com.oracel.demo01;

public class Person {
    private int id;
    private String name;
    private int age;
    //系统会默认提供一个空参构造,当自己添加时会取消,若测试类中需要,需要自己手动添加
    public Person(){
        
    }
    //可以存在多个构造方法,以重载的形式存在
    public Person(int id){
        this.id=id;
    }
public Person(int id,String name,int age){ this(id); //使用this关键词,调用构造方法this.name=name; //接收参数,并且赋值 this.age=age;  //使用this.关键词 来区分成员变量和局部变量 } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public boolean compare(Person p){ return this.age==p.age; } }

测试类:

package com.oracel.demo01;

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //构造函数只能在创建对象(new)的时候赋值一次 
        //构造方法是给成员变量初始化的,但系统还是先赋默认值,然后再传参
          Person p=new Person(1,"寒武",18);
          System.out.println(p.getId()+"..."+p.getName()+"..."+p.getAge());
    }
}

猜你喜欢

转载自www.cnblogs.com/0328dongbin/p/9066509.html
今日推荐